From 41f45c1ea1a91b13cd84072b232fa08c304333a8 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 29 Oct 2022 20:45:23 +0900 Subject: [PATCH 001/189] fix desktop setting --- .github/workflows/ci.yml | 10 +- desktop/.eslintignore | 8 + desktop/.eslintrc.js | 62 +- desktop/.gitignore | 8 +- desktop/.npmrc | 3 + desktop/.prettierignore | 8 +- desktop/README.md | 18 +- .../menu-bar-icon.ico | Bin .../menu-bar-icon.png | Bin desktop/electron-builder.json5 | 41 - desktop/electron/electron-env.d.ts | 11 - desktop/electron/main/path.ts | 8 - desktop/electron/preload/overlay.ts | 23 - desktop/package-lock.json | 21173 ++++++++++++++++ desktop/package.json | 87 +- desktop/packages/eslintrc/index.js | 58 + desktop/packages/eslintrc/package.json | 19 + desktop/{ => packages/main}/openapitools.json | 0 desktop/packages/main/package.json | 23 + .../main => packages/main/src}/AppState.ts | 0 .../main => packages/main/src}/api.ts | 2 +- .../src}/generated/http-client/.gitignore | 0 .../src}/generated/http-client/.npmignore | 0 .../http-client/.openapi-generator-ignore | 0 .../http-client/.openapi-generator/FILES | 0 .../http-client/.openapi-generator/VERSION | 0 .../main/src}/generated/http-client/api.ts | 67 + .../main/src}/generated/http-client/base.ts | 0 .../main/src}/generated/http-client/common.ts | 0 .../generated/http-client/configuration.ts | 0 .../src}/generated/http-client/git_push.sh | 0 .../main/src}/generated/http-client/index.ts | 0 .../app.ts => packages/main/src/index.ts} | 0 .../main => packages/main/src}/link.ts | 0 .../main/src}/menu/template.ts | 32 +- .../main => packages/main/src}/menu/tray.ts | 8 +- .../main => packages/main/src}/pagination.ts | 0 desktop/packages/main/src/path.ts | 7 + .../main => packages/main/src}/pointer.ts | 0 .../main => packages/main/src}/room.ts | 0 .../main => packages/main/src}/stomp.ts | 2 +- .../main => packages/main/src}/types.ts | 0 desktop/packages/main/src/types/env.d.ts | 22 + .../main => packages/main/src}/window.ts | 12 +- desktop/packages/main/tsconfig.json | 14 + desktop/packages/main/vite.config.ts | 37 + desktop/packages/preload/package.json | 17 + desktop/packages/preload/src/index.ts | 1 + desktop/packages/preload/tsconfig.json | 4 + desktop/packages/preload/vite.config.ts | 32 + desktop/{ => packages/renderer}/link.html | 0 desktop/{ => packages/renderer}/overlay.html | 0 desktop/packages/renderer/package.json | 28 + .../{ => packages/renderer}/src/link/App.tsx | 0 .../renderer}/src/link/Confirmation.tsx | 0 .../src/link/InviteLink/Clipboard.tsx | 0 .../src/link/InviteLink/ClipboardIcon.tsx | 0 .../renderer}/src/link/InviteLink/index.tsx | 0 .../{ => packages/renderer}/src/link/main.tsx | 0 .../{ => packages/renderer}/src/link/theme.ts | 0 .../renderer}/src/overlay/App.tsx | 0 .../renderer}/src/overlay/Pointer.tsx | 0 .../renderer}/src/overlay/main.tsx | 0 .../renderer}/src/overlay/theme.ts | 0 .../renderer}/src/overlay/types.ts | 0 .../{ => packages/renderer}/src/vite-env.d.ts | 0 desktop/packages/renderer/tsconfig.json | 26 + .../renderer}/tsconfig.node.json | 5 +- desktop/packages/renderer/vite.config.ts | 50 + desktop/packages/tsconfig/node/tsconfig.json | 8 + desktop/packages/tsconfig/package.json | 13 + desktop/scripts/generate-electron-vendors.mts | 19 + desktop/scripts/watch.mts | 105 + desktop/tsconfig.json | 26 +- desktop/vite.config.ts | 46 - desktop/yarn.lock | 7127 ------ 76 files changed, 21819 insertions(+), 7451 deletions(-) create mode 100644 desktop/.eslintignore create mode 100644 desktop/.npmrc rename desktop/{public/assets => buildResources}/menu-bar-icon.ico (100%) rename desktop/{public/assets => buildResources}/menu-bar-icon.png (100%) delete mode 100644 desktop/electron-builder.json5 delete mode 100644 desktop/electron/electron-env.d.ts delete mode 100644 desktop/electron/main/path.ts delete mode 100644 desktop/electron/preload/overlay.ts create mode 100644 desktop/package-lock.json create mode 100644 desktop/packages/eslintrc/index.js create mode 100644 desktop/packages/eslintrc/package.json rename desktop/{ => packages/main}/openapitools.json (100%) create mode 100644 desktop/packages/main/package.json rename desktop/{electron/main => packages/main/src}/AppState.ts (100%) rename desktop/{electron/main => packages/main/src}/api.ts (89%) rename desktop/{electron/main => packages/main/src}/generated/http-client/.gitignore (100%) rename desktop/{electron/main => packages/main/src}/generated/http-client/.npmignore (100%) rename desktop/{electron/main => packages/main/src}/generated/http-client/.openapi-generator-ignore (100%) rename desktop/{electron/main => packages/main/src}/generated/http-client/.openapi-generator/FILES (100%) rename desktop/{electron/main => packages/main/src}/generated/http-client/.openapi-generator/VERSION (100%) rename desktop/{electron/main => packages/main/src}/generated/http-client/api.ts (80%) rename desktop/{electron/main => packages/main/src}/generated/http-client/base.ts (100%) rename desktop/{electron/main => packages/main/src}/generated/http-client/common.ts (100%) rename desktop/{electron/main => packages/main/src}/generated/http-client/configuration.ts (100%) rename desktop/{electron/main => packages/main/src}/generated/http-client/git_push.sh (100%) rename desktop/{electron/main => packages/main/src}/generated/http-client/index.ts (100%) rename desktop/{electron/main/app.ts => packages/main/src/index.ts} (100%) rename desktop/{electron/main => packages/main/src}/link.ts (100%) rename desktop/{electron/main => packages/main/src}/menu/template.ts (76%) rename desktop/{electron/main => packages/main/src}/menu/tray.ts (70%) rename desktop/{electron/main => packages/main/src}/pagination.ts (100%) create mode 100644 desktop/packages/main/src/path.ts rename desktop/{electron/main => packages/main/src}/pointer.ts (100%) rename desktop/{electron/main => packages/main/src}/room.ts (100%) rename desktop/{electron/main => packages/main/src}/stomp.ts (86%) rename desktop/{electron/main => packages/main/src}/types.ts (100%) create mode 100644 desktop/packages/main/src/types/env.d.ts rename desktop/{electron/main => packages/main/src}/window.ts (59%) create mode 100644 desktop/packages/main/tsconfig.json create mode 100644 desktop/packages/main/vite.config.ts create mode 100644 desktop/packages/preload/package.json create mode 100644 desktop/packages/preload/src/index.ts create mode 100644 desktop/packages/preload/tsconfig.json create mode 100644 desktop/packages/preload/vite.config.ts rename desktop/{ => packages/renderer}/link.html (100%) rename desktop/{ => packages/renderer}/overlay.html (100%) create mode 100644 desktop/packages/renderer/package.json rename desktop/{ => packages/renderer}/src/link/App.tsx (100%) rename desktop/{ => packages/renderer}/src/link/Confirmation.tsx (100%) rename desktop/{ => packages/renderer}/src/link/InviteLink/Clipboard.tsx (100%) rename desktop/{ => packages/renderer}/src/link/InviteLink/ClipboardIcon.tsx (100%) rename desktop/{ => packages/renderer}/src/link/InviteLink/index.tsx (100%) rename desktop/{ => packages/renderer}/src/link/main.tsx (100%) rename desktop/{ => packages/renderer}/src/link/theme.ts (100%) rename desktop/{ => packages/renderer}/src/overlay/App.tsx (100%) rename desktop/{ => packages/renderer}/src/overlay/Pointer.tsx (100%) rename desktop/{ => packages/renderer}/src/overlay/main.tsx (100%) rename desktop/{ => packages/renderer}/src/overlay/theme.ts (100%) rename desktop/{ => packages/renderer}/src/overlay/types.ts (100%) rename desktop/{ => packages/renderer}/src/vite-env.d.ts (100%) create mode 100644 desktop/packages/renderer/tsconfig.json rename desktop/{ => packages/renderer}/tsconfig.node.json (70%) create mode 100644 desktop/packages/renderer/vite.config.ts create mode 100644 desktop/packages/tsconfig/node/tsconfig.json create mode 100644 desktop/packages/tsconfig/package.json create mode 100644 desktop/scripts/generate-electron-vendors.mts create mode 100644 desktop/scripts/watch.mts delete mode 100644 desktop/vite.config.ts delete mode 100644 desktop/yarn.lock diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fcf1951..40cf5b35 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,19 +46,19 @@ jobs: uses: actions/setup-node@v3 with: node-version: 16 - cache: yarn - cache-dependency-path: ./desktop/yarn.lock + cache: npm + cache-dependency-path: ./desktop/package-lock.json - name: dependencies - run: yarn install + run: npm ci - name: code check run: | - yarn code-check + npm run code-check - name: build run: | - yarn build + npm run build pointer: runs-on: ubuntu-latest diff --git a/desktop/.eslintignore b/desktop/.eslintignore new file mode 100644 index 00000000..18a02e0d --- /dev/null +++ b/desktop/.eslintignore @@ -0,0 +1,8 @@ +**/node_modules +**/dist +**/*.svg + +**/vite.config.ts + +package-lock.json +.electron-vendors.cache.json diff --git a/desktop/.eslintrc.js b/desktop/.eslintrc.js index 12b0b9ae..26ea067e 100644 --- a/desktop/.eslintrc.js +++ b/desktop/.eslintrc.js @@ -1,61 +1,5 @@ module.exports = { - env: { - browser: true, - es2021: true, - node: true, - }, - extends: [ - "eslint:recommended", - "plugin:react/recommended", - "plugin:react/jsx-runtime", - "plugin:react-hooks/recommended", - "plugin:jsx-a11y/recommended", - "plugin:import/recommended", - "plugin:import/typescript", - "plugin:@typescript-eslint/recommended", - "prettier", - ], - parser: "@typescript-eslint/parser", - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - ecmaVersion: "latest", - sourceType: "module", - }, - plugins: ["react", "import", "@typescript-eslint"], - settings: { - "import/resolver": { - typescript: {}, - }, - }, - rules: { - // TypeScript ESLint が references をサポートしておらず、main プロセスの import alias を解決できないため - // https://github.com/typescript-eslint/typescript-eslint/issues/2094 - "import/no-unresolved": "off", - // restrict order of imports - "import/order": [ - "error", - { - pathGroups: [ - { - pattern: "@/**", - group: "internal", - position: "before", - }, - ], - groups: [ - ["builtin", "external"], - ["parent"], - ["internal"], - ["index", "sibling"], - ], - "newlines-between": "always", - alphabetize: { - order: "asc", - caseInsensitive: true, - }, - }, - ], - }, + root: true, + // TODO: @smartpointer-desktop/eslintrc で設定する + extends: ["./packages/eslintrc/index.js"], }; diff --git a/desktop/.gitignore b/desktop/.gitignore index 3c0d0bbc..51453ad3 100644 --- a/desktop/.gitignore +++ b/desktop/.gitignore @@ -23,7 +23,7 @@ dist-ssr release .vscode/.debug.env -package-lock.json -pnpm-lock.yaml -yarn.lock -dist-electron + +.eslintcache +.browserslistrc +.electron-vendors.cache.json diff --git a/desktop/.npmrc b/desktop/.npmrc new file mode 100644 index 00000000..230f6079 --- /dev/null +++ b/desktop/.npmrc @@ -0,0 +1,3 @@ +scope=smartpointer-desktop +save-exact=true +init-license="" diff --git a/desktop/.prettierignore b/desktop/.prettierignore index 91d7922e..f2bf80d7 100644 --- a/desktop/.prettierignore +++ b/desktop/.prettierignore @@ -1 +1,7 @@ -electron/main/generated/http-client/* \ No newline at end of file +packages/main/src/generated/http-client/* +**/node_modules +**/dist +**/*.svg + +package-lock.json +.electron-vendors.cache.json diff --git a/desktop/README.md b/desktop/README.md index 09bba6bb..d0cbdc9c 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -1,10 +1,10 @@ -# ホストPC用 デスクトップアプリケーション +# ホスト PC 用 デスクトップアプリケーション ![version](https://img.shields.io/badge/version-1.0.0-blue.svg) ## 概要 -ホストPC向けプレゼンテーションルーム管理アプリケーションです。 +ホスト PC 向けプレゼンテーションルーム管理アプリケーションです。 ルームの作成・終了、ルーム共有リンクの表示、参加者一覧の表示機能があります。 @@ -13,25 +13,31 @@ ### 環境構築 ```sh -yarn install +npm install ``` ### 開発用サーバの起動 ```sh -yarn run dev +npm run dev +``` + +開発用バックエンドを使用する場合は、環境変数 `USE_DEV_BACKEND` を `true` に設定してください。 + +```sh +USE_DEV_BACKEND=true npm run dev ``` ### コードチェック ```sh -yarn run code-check +npm run code-check ``` ### ビルド方法 ```sh -yarn build +npm run build ``` ### 使用技術 diff --git a/desktop/public/assets/menu-bar-icon.ico b/desktop/buildResources/menu-bar-icon.ico similarity index 100% rename from desktop/public/assets/menu-bar-icon.ico rename to desktop/buildResources/menu-bar-icon.ico diff --git a/desktop/public/assets/menu-bar-icon.png b/desktop/buildResources/menu-bar-icon.png similarity index 100% rename from desktop/public/assets/menu-bar-icon.png rename to desktop/buildResources/menu-bar-icon.png diff --git a/desktop/electron-builder.json5 b/desktop/electron-builder.json5 deleted file mode 100644 index 80c81c11..00000000 --- a/desktop/electron-builder.json5 +++ /dev/null @@ -1,41 +0,0 @@ -/** - * @see https://www.electron.build/configuration/configuration - */ -{ - appId: "YourAppID", - productName: "YourAppName", - copyright: "Copyright © 2022 ${author}", - asar: true, - directories: { - output: "release/${version}", - buildResources: "electron/resources", - }, - files: [ - "dist-electron", - "dist" - ], - win: { - target: [ - { - target: "nsis", - arch: ["x64"], - }, - ], - artifactName: "${productName}-Windows-${version}-Setup.${ext}", - }, - nsis: { - oneClick: false, - perMachine: false, - allowToChangeInstallationDirectory: true, - deleteAppDataOnUninstall: false, - }, - mac: { - target: ["dmg"], - artifactName: "${productName}-Mac-${version}-Installer.${ext}", - }, - linux: { - icon: "electron/resources/iconset", - target: ["AppImage", "deb"], - artifactName: "${productName}-Linux-${version}.${ext}", - }, -} diff --git a/desktop/electron/electron-env.d.ts b/desktop/electron/electron-env.d.ts deleted file mode 100644 index fbe6ca6d..00000000 --- a/desktop/electron/electron-env.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/// - -declare namespace NodeJS { - interface ProcessEnv { - VSCODE_DEBUG?: "true"; - DIST_ELECTRON: string; - DIST: string; - /** /dist/ or /public/ */ - PUBLIC: string; - } -} diff --git a/desktop/electron/main/path.ts b/desktop/electron/main/path.ts deleted file mode 100644 index c1c25b4d..00000000 --- a/desktop/electron/main/path.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { app } from "electron"; -import { join } from "path"; - -export const distElectronPath = join(__dirname, "..", ".."); -export const distPath = join(distElectronPath, "../dist"); -export const publicPath = app.isPackaged - ? distPath - : join(distElectronPath, "../public"); diff --git a/desktop/electron/preload/overlay.ts b/desktop/electron/preload/overlay.ts deleted file mode 100644 index 197985f8..00000000 --- a/desktop/electron/preload/overlay.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { contextBridge, ipcRenderer } from "electron"; - -// import type { Coordinate } from "../main/types"; - -console.log("preload"); -export type ElectronApi = { - onUpdateRotation: ( - callback: (position: { x: number; y: number }) => void - ) => void; - hidePointer: (callback: () => void) => void; -}; - -const electronApi: ElectronApi = { - onUpdateRotation: (callback: (position: { x: number; y: number }) => void) => - ipcRenderer.on("update-pointer-position", (_, data) => callback(data)), - - hidePointer: (callback: () => void) => - ipcRenderer.on("hide-pointer", callback), -}; - -contextBridge.exposeInMainWorld("electronApi", electronApi); - -console.log("preload"); diff --git a/desktop/package-lock.json b/desktop/package-lock.json new file mode 100644 index 00000000..9703219a --- /dev/null +++ b/desktop/package-lock.json @@ -0,0 +1,21173 @@ +{ + "name": "smartpointer", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "smartpointer", + "version": "1.0.0", + "hasInstallScript": true, + "workspaces": [ + "packages/*" + ], + "devDependencies": { + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0", + "@types/node": "18.11.7", + "cross-env": "7.0.3", + "electron": "21.2.0", + "electron-builder": "23.6.0", + "eslint": "8.26.0", + "npm-run-all": "4.1.5", + "prettier": "2.7.1", + "ts-node": "10.9.1", + "typescript": "4.8.4", + "vite": "3.2.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.0.tgz", + "integrity": "sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", + "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", + "dependencies": { + "@babel/types": "^7.20.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", + "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "dependencies": { + "@babel/types": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.0.tgz", + "integrity": "sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ==", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", + "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", + "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", + "dependencies": { + "regenerator-runtime": "^0.13.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz", + "integrity": "sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA==", + "dev": true, + "dependencies": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", + "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", + "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@chakra-ui/accordion": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.2.tgz", + "integrity": "sha512-Jf7A6I0eIGk34zO5TiTW8orJOFQb5A/D1ekNYbaukNccoUPKJg/xdQ/b00oIR6LT93nJxggkoP/vszfmmTHuFg==", + "dependencies": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.11" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/alert": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", + "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", + "dependencies": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/anatomy": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", + "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" + }, + "node_modules/@chakra-ui/avatar": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.0.tgz", + "integrity": "sha512-mpAkfr/JG+BNBw2WvU55CSRFYKeFBUyAQAu3YulznLzi2U3e7k3IA0J8ofbrDYlSH/9KqkDuuSrxqGZgct+Nug==", + "dependencies": { + "@chakra-ui/image": "2.0.11", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/breadcrumb": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.0.tgz", + "integrity": "sha512-khBR579SLDEo6Wuo3tETRY6m0yJD/WCvSR7Res2g1B6OJgc9OQGM7yIMu4OdLUTwfXsCnlHTDoSQPUxFOVAMIQ==", + "dependencies": { + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/breakpoint-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", + "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + }, + "node_modules/@chakra-ui/button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", + "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/checkbox": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.2.tgz", + "integrity": "sha512-Y6Zbkkk5VNoe0RzqU6F+rKlFVPlubz1KIgYcb7CCNHGOM97dLtRm78eAvJ+7Xmpitr+7zZ4hJLLjfAz+e1X7rA==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/visually-hidden": "2.0.11", + "@zag-js/focus-visible": "0.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/clickable": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", + "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", + "dependencies": { + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/close-button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", + "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "dependencies": { + "@chakra-ui/icon": "3.0.11" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/color-mode": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", + "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", + "dependencies": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/control-box": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", + "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/counter": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", + "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", + "dependencies": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/css-reset": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", + "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", + "peerDependencies": { + "@emotion/react": ">=10.0.35", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/descendant": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", + "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/dom-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", + "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" + }, + "node_modules/@chakra-ui/editable": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.13.tgz", + "integrity": "sha512-GM3n8t3/TOFFcDOWF/tuKsnqn66isZLsU+FkMRY2o0E8XjLBGjCKuXInPW5SRBqhje7EHC+kwViLE780PfwXbw==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/event-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", + "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" + }, + "node_modules/@chakra-ui/focus-lock": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", + "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", + "dependencies": { + "@chakra-ui/dom-utils": "2.0.3", + "react-focus-lock": "^2.9.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/form-control": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", + "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", + "dependencies": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/hooks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.1.0.tgz", + "integrity": "sha512-4H6BDITq/YrStW99LXurgPkcz4qHSVy9V/QWXCvt1pCuiDTqNztiW4r508H3ApAOsL9NEbyXcM/zWYD7r5VDjA==", + "dependencies": { + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/utils": "2.0.11", + "compute-scroll-into-view": "1.0.14", + "copy-to-clipboard": "3.3.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/icon": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", + "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", + "dependencies": { + "@chakra-ui/shared-utils": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/image": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", + "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", + "dependencies": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.12.tgz", + "integrity": "sha512-lJ5necu+Wt698HdCTC7L/ErA2nNVJAra7+knPe0qMR+AizGEL7LKCV/bdQe7eggjvKsDGD4alJIEczUvm3JVUQ==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/layout": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.9.tgz", + "integrity": "sha512-ztsavtirtdtjxdqIkGR6fVcrffHp6hs1twRFO/dK14FGXrX3Nn9mi3J1fr1ITBHJq6y5B3yFEj0LHN2fO8dYyw==", + "dependencies": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/lazy-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", + "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" + }, + "node_modules/@chakra-ui/live-region": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", + "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/media-query": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", + "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", + "dependencies": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/react-env": "2.0.10" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.2.tgz", + "integrity": "sha512-6Z7ecXjp6BtZ1ExbFggfxsAj1hwtcathXekmCTxHpXOD+BdjAC/13+oLclwXeuBO85aoTmQrQ2ovfTkO31bzRQ==", + "dependencies": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-outside-click": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/transition": "2.0.11" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/modal": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.2.tgz", + "integrity": "sha512-cCYuqLZO4QqFUI1H+uEqixDk6UiCP3yC+sxkhFTXHIApSG9Z44v5np7BVTd6LKdmAN8pAWcc8Oxf14RvD6LWLw==", + "dependencies": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/focus-lock": "2.0.12", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.11", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.5.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/number-input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", + "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", + "dependencies": { + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-interval": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/number-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", + "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" + }, + "node_modules/@chakra-ui/object-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", + "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + }, + "node_modules/@chakra-ui/pin-input": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.15.tgz", + "integrity": "sha512-Ha8siSZm9gyjHHBK8ejwhKT6+75U12I/hNiYFvl2JHhc+Uh8tdi7+N+9SILO5vqbIv9kb+WGitvZ67I0cHjSfw==", + "dependencies": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/popover": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", + "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", + "dependencies": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/popper": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", + "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", + "dependencies": { + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@popperjs/core": "^2.9.3" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/portal": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", + "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/progress": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.12.tgz", + "integrity": "sha512-9qtZimZosTliI7siAZkLeCVdCpXCTxmSETCudHcCUsC+FtcFacmA65+We8qij1nOIqmsbm+NYU6PP89TU2n4Hg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/provider": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.20.tgz", + "integrity": "sha512-mNNfsgm05G4x1VzvHVR9+PNEiuxNnn9xUKDuEwoaO7+IHCMzCRMtPbSJjwmv0xvHUGB9+JChjPpZI5RuHQziJQ==", + "dependencies": { + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/system": "2.3.0", + "@chakra-ui/utils": "2.0.11" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/radio": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", + "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@zag-js/focus-visible": "0.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.6.tgz", + "integrity": "sha512-xo43UU+yMqRGHZLU4fSgzojeRl5stlIfT+GLbT9CUVEm0HMJCt2m8RsNPBvGOMzANdC+bzwSiOm+MNzQBi9IBQ==", + "dependencies": { + "@chakra-ui/accordion": "2.1.2", + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/avatar": "2.2.0", + "@chakra-ui/breadcrumb": "2.1.0", + "@chakra-ui/button": "2.0.11", + "@chakra-ui/checkbox": "2.2.2", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/control-box": "2.0.10", + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/editable": "2.0.13", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/hooks": "2.1.0", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/image": "2.0.11", + "@chakra-ui/input": "2.0.12", + "@chakra-ui/layout": "2.1.9", + "@chakra-ui/live-region": "2.0.10", + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/menu": "2.1.2", + "@chakra-ui/modal": "2.2.2", + "@chakra-ui/number-input": "2.0.12", + "@chakra-ui/pin-input": "2.0.15", + "@chakra-ui/popover": "2.1.1", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/progress": "2.0.12", + "@chakra-ui/provider": "2.0.20", + "@chakra-ui/radio": "2.0.12", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/select": "2.0.12", + "@chakra-ui/skeleton": "2.0.17", + "@chakra-ui/slider": "2.0.12", + "@chakra-ui/spinner": "2.0.10", + "@chakra-ui/stat": "2.0.11", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/switch": "2.0.14", + "@chakra-ui/system": "2.3.0", + "@chakra-ui/table": "2.0.11", + "@chakra-ui/tabs": "2.1.4", + "@chakra-ui/tag": "2.0.11", + "@chakra-ui/textarea": "2.0.12", + "@chakra-ui/theme": "2.1.14", + "@chakra-ui/theme-utils": "2.0.1", + "@chakra-ui/toast": "4.0.0", + "@chakra-ui/tooltip": "2.2.0", + "@chakra-ui/transition": "2.0.11", + "@chakra-ui/utils": "2.0.11", + "@chakra-ui/visually-hidden": "2.0.11" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/react-children-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.3.tgz", + "integrity": "sha512-tPQjLEEuAw/DYLRw0cNs/g8tcdhZ3r21Sr9dTAzoyvfk0vbZ24gCXRElltW2GZLiFA63mAidzhPmc+yQF3Wtgg==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-context": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", + "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-env": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", + "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", + "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-animation-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", + "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", + "dependencies": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-callback-ref": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", + "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-controllable-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", + "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-disclosure": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", + "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-event-listener": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", + "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-focus-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", + "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", + "dependencies": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-focus-on-pointer-down": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", + "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", + "dependencies": { + "@chakra-ui/react-use-event-listener": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-interval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", + "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-latest-ref": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", + "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-merge-refs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", + "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-outside-click": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", + "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-pan-event": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", + "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", + "dependencies": { + "@chakra-ui/event-utils": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "framesync": "5.3.0" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-previous": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", + "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-safe-layout-effect": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", + "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-size": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", + "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", + "dependencies": { + "@zag-js/element-size": "0.1.0" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-timeout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", + "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-update-effect": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", + "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-utils": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", + "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", + "dependencies": { + "@chakra-ui/utils": "2.0.11" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/select": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", + "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/shared-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", + "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" + }, + "node_modules/@chakra-ui/skeleton": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", + "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "dependencies": { + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/react-use-previous": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/slider": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", + "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "dependencies": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-pan-event": "2.0.5", + "@chakra-ui/react-use-size": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/spinner": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", + "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/stat": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", + "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", + "dependencies": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/styled-system": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", + "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", + "dependencies": { + "csstype": "^3.0.11", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/switch": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.14.tgz", + "integrity": "sha512-6lzhCkJq7vbD3yGaorGLp0ZZU4ewdKwAu0e62qR8TfYZwbcbpkXbBKloIHbA2XKOduISzS2WYqjmoP6jSKIxrA==", + "dependencies": { + "@chakra-ui/checkbox": "2.2.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/system": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.3.0.tgz", + "integrity": "sha512-BxikahglBI0uU8FE3anEorDTU5oKTUuBIEKVcQrEVnrbNuRJEy1OVYyCNXfqW3MpruRO9ypYV2bWt02AZZWEaQ==", + "dependencies": { + "@chakra-ui/color-mode": "2.1.9", + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme-utils": "2.0.1", + "@chakra-ui/utils": "2.0.11", + "react-fast-compare": "3.2.0" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/table": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", + "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/tabs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.4.tgz", + "integrity": "sha512-/CQGj1lC9lvruT5BCYZH6Ok64W4CDSysDXuR2XPZXIih9kVOdXQEMXxG8+3vc63WqTBjHuURtZI0g8ouOy84ew==", + "dependencies": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/tag": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", + "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", + "dependencies": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/textarea": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", + "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/theme": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.14.tgz", + "integrity": "sha512-6EYJCQlrjSjNAJvZmw1un50F8+sQDFsdwu/7UzWe+TeANpKlz4ZcHbh0gkl3PD62lGis+ehITUwqRm8htvDOjw==", + "dependencies": { + "@chakra-ui/anatomy": "2.0.7", + "@chakra-ui/theme-tools": "2.0.12" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.0.0" + } + }, + "node_modules/@chakra-ui/theme-tools": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", + "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", + "dependencies": { + "@chakra-ui/anatomy": "2.0.7", + "@ctrl/tinycolor": "^3.4.0" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.0.0" + } + }, + "node_modules/@chakra-ui/theme-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.1.tgz", + "integrity": "sha512-NDwzgTPxm+v3PAJlSSU1MORHLMqO9vsRJ+ObELD5wpvE9aEyRziN/AZSoK2oLwCQMPEiU7R99K5ij1E6ptMt7w==", + "dependencies": { + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.14", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/toast": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-4.0.0.tgz", + "integrity": "sha512-abeeloJac5T9WK2IN76fEM5FSRH+erNXln2HqDf5wLBn33avSBXWyTiUL8riVSUqto0lrIn6FuK/MmKo0DH4og==", + "dependencies": { + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-use-timeout": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.14" + }, + "peerDependencies": { + "@chakra-ui/system": "2.3.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/tooltip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", + "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", + "dependencies": { + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/transition": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.11.tgz", + "integrity": "sha512-O0grc162LARPurjz1R+J+zr4AAKsVwN5+gaqLfZLMWg6TpvczJhwEA2fLCNAdkC/gomere390bJsy52xfUacUw==", + "peerDependencies": { + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/utils": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", + "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", + "dependencies": { + "@types/lodash.mergewith": "4.6.6", + "css-box-model": "1.2.1", + "framesync": "5.3.0", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/visually-hidden": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", + "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@electron/get": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=8.6" + }, + "optionalDependencies": { + "global-agent": "^3.0.0", + "global-tunnel-ng": "^2.7.1" + } + }, + "node_modules/@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", + "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", + "dependencies": { + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.1", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.1.3" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "dependencies": { + "@emotion/memoize": "^0.8.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "node_modules/@emotion/react": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz", + "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/cache": "^11.10.5", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", + "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + }, + "node_modules/@emotion/styled": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz", + "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz", + "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz", + "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@heroicons/react": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.12.tgz", + "integrity": "sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg==", + "peerDependencies": { + "react": ">= 16" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jimp/bmp": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.2.tgz", + "integrity": "sha512-4g9vW45QfMoGhLVvaFj26h4e7cC+McHUQwyFQmNTLW4FfC1OonN9oUr2m/FEDGkTYKR7aqdXR5XUqqIkHWLaFw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "bmp-js": "^0.1.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.2.tgz", + "integrity": "sha512-dp7HcyUMzjXphXYodI6PaXue+I9PXAavbb+AN+1XqFbotN22Z12DosNPEyy+UhLY/hZiQQqUkEaJHkvV31rs+w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/core/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/@jimp/custom": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.2.tgz", + "integrity": "sha512-GtNwOs4hcVS2GIbqRUf42rUuX07oLB92cj7cqxZb0ZGWwcwhnmSW0TFLAkNafXmqn9ug4VTpNvcJSUdiuECVKg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.2" + } + }, + "node_modules/@jimp/gif": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.2.tgz", + "integrity": "sha512-TMdyT9Q0paIKNtT7c5KzQD29CNCsI/t8ka28jMrBjEK7j5RRTvBfuoOnHv7pDJRCjCIqeUoaUSJ7QcciKic6CA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.2.tgz", + "integrity": "sha512-BW5gZydgq6wdIwHd+3iUNgrTklvoQc/FUKSj9meM6A0FU21lUaansRX5BDdJqHkyXJLnnlDGwDt27J+hQuBAVw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "jpeg-js": "^0.4.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.2.tgz", + "integrity": "sha512-Z31rRfV80gC/r+B/bOPSVVpJEWXUV248j7MdnMOFLu4vr8DMqXVo9jYqvwU/s4LSTMAMXqm4Jg6E/jQfadPKAg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.2.tgz", + "integrity": "sha512-ShkJCAzRI+1fAKPuLLgEkixpSpVmKTYaKEFROUcgmrv9AansDXGNCupchqVMTdxf8zPyW8rR1ilvG3OJobufLQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.2.tgz", + "integrity": "sha512-6T4z/48F4Z5+YwAVCLOvXQcyGmo0E3WztxCz6XGQf66r4JJK78+zcCDYZFLMx0BGM0091FogNK4QniP8JaOkrA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.2.tgz", + "integrity": "sha512-6oBV0g0J17/7E+aTquvUsgSc85nUbUi+64tIK5eFIDzvjhlqhjGNJYlc46KJMCWIs61qRJayQoZdL/iT/iQuGQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.2.tgz", + "integrity": "sha512-pLcxO3hVN3LCEhMNvpZ9B7xILHVlS433Vv16zFFJxLRqZdYvPLsc+ZzJhjAiHHuEjVblQrktHE3LGeQwGJPo0w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.2.tgz", + "integrity": "sha512-gzWM7VvYeI8msyiwbUZxH+sGQEgO6Vd6adGxZ0CeKX00uQOe5lDzxb1Wjx7sHcJGz8a/5fmAuwz7rdDtpDUbkw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.2.tgz", + "integrity": "sha512-qCd3hfMEE+Z2EuuyXewgXRTtKJGIerWzc1zLEJztsUkPz5i73IGgkOL+mrNutZwGaXZbm+8SwUaGb46sxAO6Tw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.2.tgz", + "integrity": "sha512-6nXdvNNjCdD95v2o3/jPeur903dz08lG4Y8gmr5oL2yVv9LSSbMonoXYrR/ASesdyXqGdXJLU4NL+yZs4zUqbQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.2.tgz", + "integrity": "sha512-DERpIzy21ZanMkVsD0Tdy8HQLbD1E41OuvIzaMRoW4183PA6AgGNlrQoFTyXmzjy6FTy1SxaQgTEdouInAWZ9Q==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.2.tgz", + "integrity": "sha512-Df7PsGIwiIpQu3EygYCnaJyTfOwvwtYV3cmYJS7yFLtdiFUuod+hlSo5GkwEPLAy+QBxhUbDuUqnsWo4NQtbiQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.2.tgz", + "integrity": "sha512-+2uC8ioVQUr06mnjSWraskz2L33nJHze35LkQ8ZNsIpoZLkgvfiWatqAs5bj+1jGI/9kxoCFAaT1Is0f+a4/rw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.2.tgz", + "integrity": "sha512-2mnuDSg4ZEH8zcJig7DZZf4st/cYmQ5UYJKP76iGhZ+6JDACk6uejwAgT5xHecNhkVAaXMdCybA2eknH/9OE1w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.2.tgz", + "integrity": "sha512-xFvHbVepTY/nus+6yXiYN1iq+UBRkT0MdnObbiQPstUrAsz0Imn6MWISsnAyMvcNxHGrxaxjuU777JT/esM0gg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.2.tgz", + "integrity": "sha512-AbdO85xxhfgEDdxYKpUotEI9ixiCMaIpfYHD5a5O/VWeimz2kuwhcrzlHGiyq1kKAgRcl0WEneTCZAHVSyvPKA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.2.tgz", + "integrity": "sha512-+ItBWFwmB0Od7OfOtTYT1gm543PpHUgU8/DN55z83l1JqS0OomDJAe7BmCppo2405TN6YtVm/csXo7p4iWd/SQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.2.tgz", + "integrity": "sha512-ifTGEeJ5UZTCiqC70HMeU3iXk/vsOmhWiwVGOXSFXhFeE8ZpDWvlmBsrMYnRrJGuaaogHOIrrQPI+kCdDBSBIQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "load-bmfont": "^1.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.2.tgz", + "integrity": "sha512-gE4N9l6xuwzacFZ2EPCGZCJ/xR+aX2V7GdMndIl/6kYIw5/eib1SFuF9AZLvIPSFuE1FnGo8+vT0pr++SSbhYg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.2.tgz", + "integrity": "sha512-/CTEYkR1HrgmnE0VqPhhbBARbDAfFX590LWGIpxcYIYsUUGQCadl+8Qo4UX13FH0Nt8UHEtPA+O2x08uPYg9UA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.2.tgz", + "integrity": "sha512-3inuxfrlquyLaqFdiiiQNJUurR0WbvN5wAf1qcYX2LubG1AG8grayYD6H7XVoxfUGTZXh1kpmeirEYlqA2zxcw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.2.tgz", + "integrity": "sha512-Q0aIs2/L6fWMcEh9Ms73u34bT1hyUMw/oxaVoIzOLo6/E8YzCs2Bi63H0/qaPS0MQpEppI++kvosPbblABY79w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.2.tgz", + "integrity": "sha512-gyOwmBgjtMPvcuyOhkP6dOGWbQdaTfhcBRN22mYeI/k/Wh/Zh1OI21F6eKLApsVRmg15MoFnkrCz64RROC34sw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.2.tgz", + "integrity": "sha512-zCvYtCgctmC0tkYEu+y+kSwSIZBsNznqJ3/3vkpzxdyjd6wCfNY5Qc/68MPrLc1lmdeGo4cOOTYHG7Vc6myzRw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.2", + "@jimp/plugin-blur": "^0.16.2", + "@jimp/plugin-circle": "^0.16.2", + "@jimp/plugin-color": "^0.16.2", + "@jimp/plugin-contain": "^0.16.2", + "@jimp/plugin-cover": "^0.16.2", + "@jimp/plugin-crop": "^0.16.2", + "@jimp/plugin-displace": "^0.16.2", + "@jimp/plugin-dither": "^0.16.2", + "@jimp/plugin-fisheye": "^0.16.2", + "@jimp/plugin-flip": "^0.16.2", + "@jimp/plugin-gaussian": "^0.16.2", + "@jimp/plugin-invert": "^0.16.2", + "@jimp/plugin-mask": "^0.16.2", + "@jimp/plugin-normalize": "^0.16.2", + "@jimp/plugin-print": "^0.16.2", + "@jimp/plugin-resize": "^0.16.2", + "@jimp/plugin-rotate": "^0.16.2", + "@jimp/plugin-scale": "^0.16.2", + "@jimp/plugin-shadow": "^0.16.2", + "@jimp/plugin-threshold": "^0.16.2", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.2.tgz", + "integrity": "sha512-sFOtOSz/tzDwXEChFQ/Nxe+0+vG3Tj0eUxnZVDUG/StXE9dI8Bqmwj3MIa0EgK5s+QG3YlnDOmlPUa4JqmeYeQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.2.tgz", + "integrity": "sha512-ADcdqmtZF+U2YoaaHTzFX8D6NFpmN4WZUT0BPMerEuY7Cq8QoLYU22z2h034FrVW+Rbi1b3y04sB9iDiQAlf2w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.2.tgz", + "integrity": "sha512-0Ue5Sq0XnDF6TirisWv5E+8uOnRcd8vRLuwocJOhF76NIlcQrz+5r2k2XWKcr3d+11n28dHLXW5TKSqrUopxhA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.2", + "@jimp/gif": "^0.16.2", + "@jimp/jpeg": "^0.16.2", + "@jimp/png": "^0.16.2", + "@jimp/tiff": "^0.16.2", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.2.tgz", + "integrity": "sha512-XENrPvmigiXZQ8E2nxJqO6UVvWBLzbNwyYi3Y8Q1IECoYhYI3kgOQ0fmy4G269Vz1V0omh1bNmC42r4OfXg1Jg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@motionone/animation": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", + "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", + "dependencies": { + "@motionone/easing": "^10.14.0", + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/dom": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", + "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", + "dependencies": { + "@motionone/animation": "^10.13.1", + "@motionone/generators": "^10.13.1", + "@motionone/types": "^10.13.0", + "@motionone/utils": "^10.13.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/easing": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", + "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", + "dependencies": { + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/generators": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", + "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", + "dependencies": { + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/types": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", + "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" + }, + "node_modules/@motionone/utils": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", + "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", + "dependencies": { + "@motionone/types": "^10.14.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@nestjs/common": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", + "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", + "dev": true, + "dependencies": { + "axios": "0.26.1", + "iterare": "1.2.1", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "cache-manager": "*", + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "cache-manager": { + "optional": true + }, + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/common/node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/@nestjs/common/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@nestjs/core": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", + "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "object-hash": "3.0.0", + "path-to-regexp": "3.2.0", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0", + "@nestjs/microservices": "^8.0.0", + "@nestjs/platform-express": "^8.0.0", + "@nestjs/websockets": "^8.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/@nestjs/core/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nut-tree/libnut": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.3.0.tgz", + "integrity": "sha512-EAbwcA3xv4zZWX8EmcKzWlWON1hf/IxJsMAdApRqObhoarpBQO28DoHAxZW7HQPP/T9S1YrLHONjGxwUzippQQ==", + "dependencies": { + "@nut-tree/libnut-darwin": "2.3.0", + "@nut-tree/libnut-linux": "2.3.0", + "@nut-tree/libnut-win32": "2.3.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-darwin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.3.0.tgz", + "integrity": "sha512-hbNW0WN5Olrrcl59sNXCdJCHmaclwk5G/FMQcP8NoTNWkSv2L+zxXZ5dNt13DErCv9HCvMrof20nBz82LArNXg==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-darwin/node_modules/node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + }, + "node_modules/@nut-tree/libnut-linux": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.3.0.tgz", + "integrity": "sha512-Hc2GsW4/BNYViqqaaaQCytj2C4NWNCJGGhCbznjyqI2cAHU3y5Hx+Frlkcnohfo+ofyOZOlPDQSxtP+E4tmVOw==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-linux/node_modules/node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + }, + "node_modules/@nut-tree/libnut-win32": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.3.0.tgz", + "integrity": "sha512-2v9fBVekJn9ktyI2IWmYlLzNqGBdkaSscfqKmT7Kdzshh6nbsqeawRmhFc4IgTOJBSruz7oc6AWAWsRk9OL3FQ==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-win32/node_modules/node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + }, + "node_modules/@nut-tree/nut-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-2.3.0.tgz", + "integrity": "sha512-QOQeuwlB1e+Ctj7h0lcIzxeWs1tR8DACxCURDsS/TxsYP0SqNBsc+ov4GjwJGOI80WOe00gXahnqVPie4qjfSg==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "linux", + "darwin", + "win32" + ], + "dependencies": { + "@nut-tree/libnut": "2.3.0", + "clipboardy": "2.3.0", + "jimp": "0.16.2", + "node-abort-controller": "2.0.0" + } + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", + "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nestjs/common": "8.4.4", + "@nestjs/core": "8.4.4", + "@nuxtjs/opencollective": "0.3.2", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.3", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.0.1", + "glob": "7.1.6", + "inquirer": "8.2.2", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.5.5", + "tslib": "2.0.3" + }, + "bin": { + "openapi-generator-cli": "main.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openapi_generator" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-hook/debounce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@react-hook/debounce/-/debounce-3.0.0.tgz", + "integrity": "sha512-ir/kPrSfAzY12Gre0sOHkZ2rkEmM4fS5M5zFxCi4BnCeXh2nvx9Ujd+U4IGpKCuPA+EQD0pg1eK2NGLvfWejag==", + "dependencies": { + "@react-hook/latest": "^1.0.2" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@react-hook/event": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@react-hook/event/-/event-1.2.6.tgz", + "integrity": "sha512-JUL5IluaOdn5w5Afpe/puPa1rj8X6udMlQ9dt4hvMuKmTrBS1Ya6sb4sVgvfe2eU4yDuOfAhik8xhbcCekbg9Q==", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@react-hook/latest": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz", + "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@react-hook/throttle": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-hook/throttle/-/throttle-2.2.0.tgz", + "integrity": "sha512-LJ5eg+yMV8lXtqK3lR+OtOZ2WH/EfWvuiEEu0M3bhR7dZRfTyEJKxH1oK9uyBxiXPtWXiQggWbZirMCXam51tg==", + "dependencies": { + "@react-hook/latest": "^1.0.2" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@react-hook/window-size": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@react-hook/window-size/-/window-size-3.1.1.tgz", + "integrity": "sha512-yWnVS5LKnOUIrEsI44oz3bIIUYqflamPL27n+k/PC//PsX/YeWBky09oPeAoc9As6jSH16Wgo8plI+ECZaHk3g==", + "dependencies": { + "@react-hook/debounce": "^3.0.0", + "@react-hook/event": "^1.2.1", + "@react-hook/throttle": "^2.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@smartpointer-desktop/eslintrc": { + "resolved": "packages/eslintrc", + "link": true + }, + "node_modules/@smartpointer-desktop/main": { + "resolved": "packages/main", + "link": true + }, + "node_modules/@smartpointer-desktop/preload": { + "resolved": "packages/preload", + "link": true + }, + "node_modules/@smartpointer-desktop/renderer": { + "resolved": "packages/renderer", + "link": true + }, + "node_modules/@smartpointer-desktop/tsconfig": { + "resolved": "packages/tsconfig", + "link": true + }, + "node_modules/@stomp/stompjs": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", + "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@tsconfig/node16-strictest-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16-strictest-esm/-/node16-strictest-esm-1.0.3.tgz", + "integrity": "sha512-0/QTPDkKmE2dy0dMRstPCv4VJ+gUGgvMKzaWd5P3hgdlmPqYqe1pJxDGUlNYbSgUBlncIvvX+mIeZarokysNgg==", + "dev": true + }, + "node_modules/@tsconfig/strictest": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-1.0.2.tgz", + "integrity": "sha512-IRKlC8cnP7zMz1SDBjyIVyPapkEGWLZ6wkF6Z8T+xU80P9sO5uGXlIUvtzjx+7ehPJRWxkB6CeIDwUfyqNtYkQ==", + "dev": true + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.186", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz", + "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==" + }, + "node_modules/@types/lodash.mergewith": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz", + "integrity": "sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "optional": true + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", + "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "optional": true, + "peer": true + }, + "node_modules/@types/react": { + "version": "18.0.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz", + "integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==", + "optional": true, + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "optional": true, + "peer": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/sockjs-client": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-bmZM6A1GPdjF0bcuIUC+50hZEMGkzMsiG9by6X9U+7IZFOiPtz7MJ9h05FSpPVxlj4i+TzzoG3ESo1FJlbLb6A==", + "dev": true + }, + "node_modules/@types/verror": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", + "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/yargs": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", + "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz", + "integrity": "sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/type-utils": "5.41.0", + "@typescript-eslint/utils": "5.41.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.41.0.tgz", + "integrity": "sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.41.0.tgz", + "integrity": "sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.41.0.tgz", + "integrity": "sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/utils": "5.41.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.41.0.tgz", + "integrity": "sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.41.0.tgz", + "integrity": "sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.41.0.tgz", + "integrity": "sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.41.0.tgz", + "integrity": "sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.41.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", + "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-jsx": "^7.19.0", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.26.7", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^3.0.0" + } + }, + "node_modules/@zag-js/element-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz", + "integrity": "sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==" + }, + "node_modules/@zag-js/focus-visible": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz", + "integrity": "sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==" + }, + "node_modules/7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "node_modules/app-builder-lib": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", + "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", + "dev": true, + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.2.1", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.7", + "electron-osx-sign": "^0.6.0", + "electron-publish": "23.6.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.10", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.1.2", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.7", + "tar": "^6.1.11", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/app-builder-lib/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/app-builder-lib/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/are-we-there-yet": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", + "integrity": "sha512-Zfw6bteqM9gQXZ1BIWOgM8xEwMrUGoyL8nW13+O+OOgNX3YhuDN1GDgg1NzdTlmm3j+9sHy7uBZ12r+z9lXnZQ==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.0 || ^1.1.13" + } + }, + "node_modules/are-we-there-yet/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-hidden": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz", + "integrity": "sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.9.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asar": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", + "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change", + "dev": true, + "dependencies": { + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + }, + "optionalDependencies": { + "@types/glob": "^7.1.1" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/axe-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.0.tgz", + "integrity": "sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", + "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bl/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5" + } + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g==" + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/builder-util": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", + "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", + "dev": true, + "dependencies": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", + "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/builder-util/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/builder-util/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001426", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz", + "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", + "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "optional": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cmake-js": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.1.0.tgz", + "integrity": "sha512-utmukLQftpgrCpGRCaHnkv4K27HZNNFqmBl4vnvccy0xp4c1erxjFU/Lq4wn5ngAhFZmpwBPQfoKWKThjSBiwg==", + "dependencies": { + "debug": "^4", + "fs-extra": "^5.0.0", + "is-iojs": "^1.0.1", + "lodash": "^4", + "memory-stream": "0", + "npmlog": "^1.2.0", + "rc": "^1.2.7", + "request": "^2.54.0", + "semver": "^5.0.3", + "splitargs": "0", + "tar": "^4", + "unzipper": "^0.8.13", + "url-join": "0", + "which": "^1.0.9", + "yargs": "^3.6.0" + }, + "bin": { + "cmake-js": "bin/cmake-js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/cmake-js/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cmake-js/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cmake-js/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/cmake-js/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/cmake-js/node_modules/fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/cmake-js/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/cmake-js/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cmake-js/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/cmake-js/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/cmake-js/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/cmake-js/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/cmake-js/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cmake-js/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cmake-js/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/cmake-js/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/cmake-js/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cmake-js/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "node_modules/cmake-js/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/cmake-js/node_modules/yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg==", + "dependencies": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compare-versions": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", + "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "dev": true + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", + "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/concurrently/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/concurrently/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "optional": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "node_modules/console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "dev": true, + "dependencies": { + "easy-table": "1.1.0" + }, + "engines": { + "node": "> 0.10" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/core-js-pure": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", + "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cosmiconfig/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "optional": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "dev": true, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "optional": true + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, + "node_modules/dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "dependencies": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "bin": { + "dircompare": "src/cli/dircompare.js" + } + }, + "node_modules/dir-compare/node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dmg-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", + "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", + "dev": true, + "dependencies": { + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/dmg-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dmg-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/dmg-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "node_modules/easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", + "dev": true, + "optionalDependencies": { + "wcwidth": ">=1.0.1" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-21.2.0.tgz", + "integrity": "sha512-oKV4fo8l6jlOZ1cYZ4RpZz02ZxLuBo3SO7DH+FrJ8uDyCirP+eVJ/qlzu23odtNe0P7S/mYAZbC6abZHWoqtLg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@electron/get": "^1.14.1", + "@types/node": "^16.11.26", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + } + }, + "node_modules/electron-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", + "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + "dev": true, + "dependencies": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "dmg-builder": "23.6.0", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "simple-update-notifier": "^1.0.7", + "yargs": "^17.5.1" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-osx-sign": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", + "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", + "deprecated": "Please use @electron/osx-sign moving forward. Be aware the API is slightly different", + "dev": true, + "dependencies": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/electron-osx-sign/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/electron-osx-sign/node_modules/isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "dependencies": { + "buffer-alloc": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/electron-osx-sign/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/electron-publish": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", + "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-publish/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-publish/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "node_modules/electron/node_modules/@types/node": { + "version": "16.18.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.2.tgz", + "integrity": "sha512-KIGQJyya+opDCFvDSZMNNS899ov5jlNdtN7PypgHWeb8e+5vWISdwTRo/ClsNVlmDihzOGqFyNBDamUs7TQQCA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "node_modules/esbuild": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz", + "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==", + "devOptional": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.12", + "@esbuild/linux-loong64": "0.15.12", + "esbuild-android-64": "0.15.12", + "esbuild-android-arm64": "0.15.12", + "esbuild-darwin-64": "0.15.12", + "esbuild-darwin-arm64": "0.15.12", + "esbuild-freebsd-64": "0.15.12", + "esbuild-freebsd-arm64": "0.15.12", + "esbuild-linux-32": "0.15.12", + "esbuild-linux-64": "0.15.12", + "esbuild-linux-arm": "0.15.12", + "esbuild-linux-arm64": "0.15.12", + "esbuild-linux-mips64le": "0.15.12", + "esbuild-linux-ppc64le": "0.15.12", + "esbuild-linux-riscv64": "0.15.12", + "esbuild-linux-s390x": "0.15.12", + "esbuild-netbsd-64": "0.15.12", + "esbuild-openbsd-64": "0.15.12", + "esbuild-sunos-64": "0.15.12", + "esbuild-windows-32": "0.15.12", + "esbuild-windows-64": "0.15.12", + "esbuild-windows-arm64": "0.15.12" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz", + "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz", + "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz", + "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz", + "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz", + "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz", + "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz", + "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz", + "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz", + "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz", + "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz", + "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz", + "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz", + "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz", + "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz", + "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz", + "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz", + "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz", + "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz", + "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz", + "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", + "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", + "is-glob": "^4.0.3", + "synckit": "^0.8.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/eslint-plugin-react": { + "version": "7.31.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", + "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/focus-lock": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.3.tgz", + "integrity": "sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg==", + "dependencies": { + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/framer-motion": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.6.2.tgz", + "integrity": "sha512-YRr+KaC+1MlLx7iArVyjZRpc0QXI7H0XIOJrdol+dF1+WLQJwS2sP04KGq808BG+byD36UAmAt4YqObE5YFLtw==", + "dependencies": { + "@motionone/dom": "10.13.1", + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "popmotion": "11.0.5", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/framer-motion/node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "dependencies": { + "tslib": "2.4.0" + } + }, + "node_modules/framesync": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", + "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA==", + "dependencies": { + "ansi": "^0.3.0", + "has-unicode": "^2.0.0", + "lodash.pad": "^4.1.0", + "lodash.padend": "^4.1.0", + "lodash.padstart": "^4.1.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", + "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-agent/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "dev": true, + "optional": true, + "dependencies": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "optional": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + }, + "engines": { + "node": "^8.11.2 || >=10" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inquirer": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", + "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-iojs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", + "integrity": "sha512-tLn1j3wYSL6DkvEI+V/j0pKohpa5jk+ER74v6S4SgCXnjS0WA+DoZbwZBrrhgwksMvtuwndyGeG5F8YMsoBzSA==" + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jimp": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.2.tgz", + "integrity": "sha512-UpItBk81a92f8oEyoGYbO3YK4QcM0hoIyuGHmShoF9Ov63P5Qo7Q/X2xsAgnODmSuDJFOtrPtJd5GSWW4LKdOQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.2", + "@jimp/plugins": "^0.16.2", + "@jimp/types": "^0.16.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jsprim/node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/jsprim/node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "dev": true + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "node_modules/load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-bmfont/node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/load-bmfont/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + }, + "node_modules/lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==" + }, + "node_modules/lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==" + }, + "node_modules/lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/memory-stream": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", + "integrity": "sha512-q0D3m846qY6ZkIt+19ZemU5vH56lpOZZwoJc3AICARKh/menBuayQUjAGPrqtHQQMUYERSdOrej92J9kz7LgYA==", + "dependencies": { + "readable-stream": "~1.0.26-2" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mlly": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.14.tgz", + "integrity": "sha512-DgRgNUSX9NIxxCxygX4Xeg9C7GX7OUx1wuQ8cXx9o9LE0e9wrH+OZ9fcnrlEedsC/rtqry3ZhUddC759XD/L0w==", + "dependencies": { + "acorn": "^8.8.0", + "pathe": "^0.3.5", + "pkg-types": "^0.3.4", + "ufo": "^0.8.5" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "devOptional": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/node-abort-controller": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", + "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==" + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "optional": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "optional": true, + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", + "integrity": "sha512-1J5KqSRvESP6XbjPaXt2H6qDzgizLTM7x0y1cXIjP2PpvdCqyNC7TO3cPRKsuYlElbi/DwkzRRdG2zpmE0IktQ==", + "dependencies": { + "ansi": "~0.3.0", + "are-we-there-yet": "~1.0.0", + "gauge": "~1.2.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pathe": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", + "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pkg-types": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz", + "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==", + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^0.5.16", + "pathe": "^0.3.9" + } + }, + "node_modules/pkg-types/node_modules/mlly": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz", + "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==", + "dependencies": { + "acorn": "^8.8.0", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "ufo": "^0.8.5" + } + }, + "node_modules/plist": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", + "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", + "dev": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/popmotion": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", + "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", + "dependencies": { + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + } + }, + "node_modules/popmotion/node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "dependencies": { + "tslib": "2.4.0" + } + }, + "node_modules/postcss": { + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, + "optional": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-clientside-effect": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", + "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "dependencies": { + "@babel/runtime": "^7.12.13" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "node_modules/react-focus-lock": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", + "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.11.2", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.6", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/read-config-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + "dev": true, + "dependencies": { + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "devOptional": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "optional": true + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sockjs-client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", + "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", + "dependencies": { + "debug": "^3.2.7", + "eventsource": "^2.0.2", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://tidelift.com/funding/github/npm/sockjs-client" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/splitargs": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", + "integrity": "sha512-UUFYD2oWbNwULH6WoVtLUOw8ch586B+HUqcsAjjjeoBQAM1bD4wZRXu01koaxyd8UeYpybWqW4h+lO1Okv40Tg==" + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-value-types": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", + "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", + "dependencies": { + "hey-listen": "^1.0.8", + "tslib": "2.4.0" + } + }, + "node_modules/stylis": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", + "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", + "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/temp-file/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/temp-file/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/temp-file/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "engines": { + "node": "*" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "engines": { + "node": "*" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "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" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unplugin": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.9.5.tgz", + "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==", + "dependencies": { + "acorn": "^8.8.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.4.4" + }, + "peerDependencies": { + "esbuild": ">=0.13", + "rollup": "^2.50.0", + "vite": "^2.3.0 || ^3.0.0-0", + "webpack": "4 || 5" + }, + "peerDependenciesMeta": { + "esbuild": { + "optional": true + }, + "rollup": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/unplugin-auto-expose": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/unplugin-auto-expose/-/unplugin-auto-expose-0.0.3.tgz", + "integrity": "sha512-UsZevvvS+N1/jSm+CDgMIdYP0ruB6rqIV16NnNfWh/UkStt+j7IxyfgkTEv2gKBFByE/TgAN43TUJZ1Lw8T9mQ==", + "dependencies": { + "magic-string": "^0.26.3", + "mlly": "0.5.14", + "unplugin": "0.9.5" + } + }, + "node_modules/unzipper": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", + "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "~1.0.10", + "listenercount": "~1.0.1", + "readable-stream": "~2.1.5", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "node_modules/unzipper/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/unzipper/node_modules/process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "integrity": "sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw==", + "dependencies": { + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==" + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + "dev": true + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/vite": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.1.tgz", + "integrity": "sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==", + "devOptional": true, + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz", + "integrity": "sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg==" + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, + "node_modules/window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", + "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslintrc": { + "name": "@smartpointer-desktop/eslintrc", + "version": "1.0.0", + "devDependencies": { + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0", + "eslint": "8.26.0", + "eslint-config-prettier": "8.5.0", + "eslint-import-resolver-typescript": "3.5.2", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-react": "7.31.10", + "eslint-plugin-react-hooks": "4.6.0" + } + }, + "packages/main": { + "name": "@smartpointer-desktop/main", + "version": "1.0.0", + "dependencies": { + "@nut-tree/nut-js": "2.3.0", + "@stomp/stompjs": "6.1.2", + "axios": "1.1.3", + "sockjs-client": "1.6.1" + }, + "devDependencies": { + "@openapitools/openapi-generator-cli": "2.5.2", + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0", + "@types/sockjs-client": "1.5.1" + } + }, + "packages/preload": { + "name": "@smartpointer-desktop/preload", + "version": "1.0.0", + "dependencies": { + "unplugin-auto-expose": "0.0.3" + }, + "devDependencies": { + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0" + } + }, + "packages/renderer": { + "name": "@smartpointer-desktop/renderer", + "version": "1.0.0", + "dependencies": { + "@chakra-ui/react": "2.3.6", + "@emotion/react": "11.10.5", + "@emotion/styled": "11.10.5", + "@heroicons/react": "2.0.12", + "@react-hook/window-size": "3.1.1", + "framer-motion": "7.6.2", + "qrcode": "1.5.1", + "react": "18.2.0", + "react-dom": "18.2.0", + "unplugin-auto-expose": "0.0.3" + }, + "devDependencies": { + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0", + "@tsconfig/strictest": "1.0.2", + "@vitejs/plugin-react": "2.2.0" + } + }, + "packages/shared": { + "name": "@smartpointer-desktop/shared", + "version": "1.0.0", + "extraneous": true, + "devDependencies": { + "@tsconfig/node16-strictest-esm": "1.0.3", + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0", + "eslint": "8.26.0", + "eslint-config-prettier": "8.5.0", + "eslint-import-resolver-typescript": "3.5.2", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-react": "7.31.10", + "eslint-plugin-react-hooks": "4.6.0" + } + }, + "packages/tsconfig": { + "name": "@smartpointer-desktop/tsconfig", + "version": "1.0.0", + "devDependencies": { + "@tsconfig/node16-strictest-esm": "1.0.3", + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.0.tgz", + "integrity": "sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w==" + }, + "@babel/core": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", + "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", + "requires": { + "@babel/types": "^7.20.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", + "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" + }, + "@babel/helper-simple-access": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "requires": { + "@babel/types": "^7.19.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + }, + "@babel/helpers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.0.tgz", + "integrity": "sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", + "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==" + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/runtime": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", + "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", + "requires": { + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/runtime-corejs3": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz", + "integrity": "sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA==", + "dev": true, + "requires": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", + "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } + } + }, + "@babel/types": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", + "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@chakra-ui/accordion": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.2.tgz", + "integrity": "sha512-Jf7A6I0eIGk34zO5TiTW8orJOFQb5A/D1ekNYbaukNccoUPKJg/xdQ/b00oIR6LT93nJxggkoP/vszfmmTHuFg==", + "requires": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.11" + } + }, + "@chakra-ui/alert": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", + "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + } + }, + "@chakra-ui/anatomy": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", + "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" + }, + "@chakra-ui/avatar": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.0.tgz", + "integrity": "sha512-mpAkfr/JG+BNBw2WvU55CSRFYKeFBUyAQAu3YulznLzi2U3e7k3IA0J8ofbrDYlSH/9KqkDuuSrxqGZgct+Nug==", + "requires": { + "@chakra-ui/image": "2.0.11", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/breadcrumb": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.0.tgz", + "integrity": "sha512-khBR579SLDEo6Wuo3tETRY6m0yJD/WCvSR7Res2g1B6OJgc9OQGM7yIMu4OdLUTwfXsCnlHTDoSQPUxFOVAMIQ==", + "requires": { + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/breakpoint-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", + "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + }, + "@chakra-ui/button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", + "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + } + }, + "@chakra-ui/checkbox": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.2.tgz", + "integrity": "sha512-Y6Zbkkk5VNoe0RzqU6F+rKlFVPlubz1KIgYcb7CCNHGOM97dLtRm78eAvJ+7Xmpitr+7zZ4hJLLjfAz+e1X7rA==", + "requires": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/visually-hidden": "2.0.11", + "@zag-js/focus-visible": "0.1.0" + } + }, + "@chakra-ui/clickable": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", + "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", + "requires": { + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/close-button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", + "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "requires": { + "@chakra-ui/icon": "3.0.11" + } + }, + "@chakra-ui/color-mode": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", + "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", + "requires": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/control-box": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", + "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", + "requires": {} + }, + "@chakra-ui/counter": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", + "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", + "requires": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/css-reset": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", + "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", + "requires": {} + }, + "@chakra-ui/descendant": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", + "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/dom-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", + "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" + }, + "@chakra-ui/editable": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.13.tgz", + "integrity": "sha512-GM3n8t3/TOFFcDOWF/tuKsnqn66isZLsU+FkMRY2o0E8XjLBGjCKuXInPW5SRBqhje7EHC+kwViLE780PfwXbw==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/event-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", + "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" + }, + "@chakra-ui/focus-lock": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", + "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", + "requires": { + "@chakra-ui/dom-utils": "2.0.3", + "react-focus-lock": "^2.9.1" + } + }, + "@chakra-ui/form-control": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", + "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/hooks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.1.0.tgz", + "integrity": "sha512-4H6BDITq/YrStW99LXurgPkcz4qHSVy9V/QWXCvt1pCuiDTqNztiW4r508H3ApAOsL9NEbyXcM/zWYD7r5VDjA==", + "requires": { + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/utils": "2.0.11", + "compute-scroll-into-view": "1.0.14", + "copy-to-clipboard": "3.3.1" + } + }, + "@chakra-ui/icon": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", + "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", + "requires": { + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/image": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", + "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", + "requires": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.12.tgz", + "integrity": "sha512-lJ5necu+Wt698HdCTC7L/ErA2nNVJAra7+knPe0qMR+AizGEL7LKCV/bdQe7eggjvKsDGD4alJIEczUvm3JVUQ==", + "requires": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/layout": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.9.tgz", + "integrity": "sha512-ztsavtirtdtjxdqIkGR6fVcrffHp6hs1twRFO/dK14FGXrX3Nn9mi3J1fr1ITBHJq6y5B3yFEj0LHN2fO8dYyw==", + "requires": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/lazy-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", + "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" + }, + "@chakra-ui/live-region": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", + "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", + "requires": {} + }, + "@chakra-ui/media-query": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", + "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", + "requires": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/react-env": "2.0.10" + } + }, + "@chakra-ui/menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.2.tgz", + "integrity": "sha512-6Z7ecXjp6BtZ1ExbFggfxsAj1hwtcathXekmCTxHpXOD+BdjAC/13+oLclwXeuBO85aoTmQrQ2ovfTkO31bzRQ==", + "requires": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-outside-click": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/transition": "2.0.11" + } + }, + "@chakra-ui/modal": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.2.tgz", + "integrity": "sha512-cCYuqLZO4QqFUI1H+uEqixDk6UiCP3yC+sxkhFTXHIApSG9Z44v5np7BVTd6LKdmAN8pAWcc8Oxf14RvD6LWLw==", + "requires": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/focus-lock": "2.0.12", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.11", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.5.4" + } + }, + "@chakra-ui/number-input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", + "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", + "requires": { + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-interval": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4" + } + }, + "@chakra-ui/number-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", + "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" + }, + "@chakra-ui/object-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", + "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + }, + "@chakra-ui/pin-input": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.15.tgz", + "integrity": "sha512-Ha8siSZm9gyjHHBK8ejwhKT6+75U12I/hNiYFvl2JHhc+Uh8tdi7+N+9SILO5vqbIv9kb+WGitvZ67I0cHjSfw==", + "requires": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/popover": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", + "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", + "requires": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/popper": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", + "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", + "requires": { + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@popperjs/core": "^2.9.3" + } + }, + "@chakra-ui/portal": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", + "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/progress": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.12.tgz", + "integrity": "sha512-9qtZimZosTliI7siAZkLeCVdCpXCTxmSETCudHcCUsC+FtcFacmA65+We8qij1nOIqmsbm+NYU6PP89TU2n4Hg==", + "requires": { + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/provider": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.20.tgz", + "integrity": "sha512-mNNfsgm05G4x1VzvHVR9+PNEiuxNnn9xUKDuEwoaO7+IHCMzCRMtPbSJjwmv0xvHUGB9+JChjPpZI5RuHQziJQ==", + "requires": { + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/system": "2.3.0", + "@chakra-ui/utils": "2.0.11" + } + }, + "@chakra-ui/radio": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", + "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", + "requires": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@zag-js/focus-visible": "0.1.0" + } + }, + "@chakra-ui/react": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.6.tgz", + "integrity": "sha512-xo43UU+yMqRGHZLU4fSgzojeRl5stlIfT+GLbT9CUVEm0HMJCt2m8RsNPBvGOMzANdC+bzwSiOm+MNzQBi9IBQ==", + "requires": { + "@chakra-ui/accordion": "2.1.2", + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/avatar": "2.2.0", + "@chakra-ui/breadcrumb": "2.1.0", + "@chakra-ui/button": "2.0.11", + "@chakra-ui/checkbox": "2.2.2", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/control-box": "2.0.10", + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/editable": "2.0.13", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/hooks": "2.1.0", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/image": "2.0.11", + "@chakra-ui/input": "2.0.12", + "@chakra-ui/layout": "2.1.9", + "@chakra-ui/live-region": "2.0.10", + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/menu": "2.1.2", + "@chakra-ui/modal": "2.2.2", + "@chakra-ui/number-input": "2.0.12", + "@chakra-ui/pin-input": "2.0.15", + "@chakra-ui/popover": "2.1.1", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/progress": "2.0.12", + "@chakra-ui/provider": "2.0.20", + "@chakra-ui/radio": "2.0.12", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/select": "2.0.12", + "@chakra-ui/skeleton": "2.0.17", + "@chakra-ui/slider": "2.0.12", + "@chakra-ui/spinner": "2.0.10", + "@chakra-ui/stat": "2.0.11", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/switch": "2.0.14", + "@chakra-ui/system": "2.3.0", + "@chakra-ui/table": "2.0.11", + "@chakra-ui/tabs": "2.1.4", + "@chakra-ui/tag": "2.0.11", + "@chakra-ui/textarea": "2.0.12", + "@chakra-ui/theme": "2.1.14", + "@chakra-ui/theme-utils": "2.0.1", + "@chakra-ui/toast": "4.0.0", + "@chakra-ui/tooltip": "2.2.0", + "@chakra-ui/transition": "2.0.11", + "@chakra-ui/utils": "2.0.11", + "@chakra-ui/visually-hidden": "2.0.11" + } + }, + "@chakra-ui/react-children-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.3.tgz", + "integrity": "sha512-tPQjLEEuAw/DYLRw0cNs/g8tcdhZ3r21Sr9dTAzoyvfk0vbZ24gCXRElltW2GZLiFA63mAidzhPmc+yQF3Wtgg==", + "requires": {} + }, + "@chakra-ui/react-context": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", + "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "requires": {} + }, + "@chakra-ui/react-env": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", + "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", + "requires": {} + }, + "@chakra-ui/react-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", + "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", + "requires": {} + }, + "@chakra-ui/react-use-animation-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", + "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", + "requires": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4" + } + }, + "@chakra-ui/react-use-callback-ref": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", + "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "requires": {} + }, + "@chakra-ui/react-use-controllable-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", + "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-disclosure": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", + "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-event-listener": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", + "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-focus-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", + "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", + "requires": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + } + }, + "@chakra-ui/react-use-focus-on-pointer-down": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", + "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", + "requires": { + "@chakra-ui/react-use-event-listener": "2.0.4" + } + }, + "@chakra-ui/react-use-interval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", + "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-latest-ref": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", + "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", + "requires": {} + }, + "@chakra-ui/react-use-merge-refs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", + "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", + "requires": {} + }, + "@chakra-ui/react-use-outside-click": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", + "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-pan-event": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", + "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", + "requires": { + "@chakra-ui/event-utils": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "framesync": "5.3.0" + } + }, + "@chakra-ui/react-use-previous": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", + "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", + "requires": {} + }, + "@chakra-ui/react-use-safe-layout-effect": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", + "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", + "requires": {} + }, + "@chakra-ui/react-use-size": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", + "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", + "requires": { + "@zag-js/element-size": "0.1.0" + } + }, + "@chakra-ui/react-use-timeout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", + "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-update-effect": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", + "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", + "requires": {} + }, + "@chakra-ui/react-utils": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", + "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", + "requires": { + "@chakra-ui/utils": "2.0.11" + } + }, + "@chakra-ui/select": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", + "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "requires": { + "@chakra-ui/form-control": "2.0.11" + } + }, + "@chakra-ui/shared-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", + "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" + }, + "@chakra-ui/skeleton": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", + "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "requires": { + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/react-use-previous": "2.0.2" + } + }, + "@chakra-ui/slider": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", + "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "requires": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-pan-event": "2.0.5", + "@chakra-ui/react-use-size": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + } + }, + "@chakra-ui/spinner": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", + "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", + "requires": {} + }, + "@chakra-ui/stat": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", + "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/styled-system": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", + "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", + "requires": { + "csstype": "^3.0.11", + "lodash.mergewith": "4.6.2" + } + }, + "@chakra-ui/switch": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.14.tgz", + "integrity": "sha512-6lzhCkJq7vbD3yGaorGLp0ZZU4ewdKwAu0e62qR8TfYZwbcbpkXbBKloIHbA2XKOduISzS2WYqjmoP6jSKIxrA==", + "requires": { + "@chakra-ui/checkbox": "2.2.2" + } + }, + "@chakra-ui/system": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.3.0.tgz", + "integrity": "sha512-BxikahglBI0uU8FE3anEorDTU5oKTUuBIEKVcQrEVnrbNuRJEy1OVYyCNXfqW3MpruRO9ypYV2bWt02AZZWEaQ==", + "requires": { + "@chakra-ui/color-mode": "2.1.9", + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme-utils": "2.0.1", + "@chakra-ui/utils": "2.0.11", + "react-fast-compare": "3.2.0" + } + }, + "@chakra-ui/table": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", + "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", + "requires": { + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/tabs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.4.tgz", + "integrity": "sha512-/CQGj1lC9lvruT5BCYZH6Ok64W4CDSysDXuR2XPZXIih9kVOdXQEMXxG8+3vc63WqTBjHuURtZI0g8ouOy84ew==", + "requires": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/tag": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", + "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/textarea": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", + "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "requires": { + "@chakra-ui/form-control": "2.0.11" + } + }, + "@chakra-ui/theme": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.14.tgz", + "integrity": "sha512-6EYJCQlrjSjNAJvZmw1un50F8+sQDFsdwu/7UzWe+TeANpKlz4ZcHbh0gkl3PD62lGis+ehITUwqRm8htvDOjw==", + "requires": { + "@chakra-ui/anatomy": "2.0.7", + "@chakra-ui/theme-tools": "2.0.12" + } + }, + "@chakra-ui/theme-tools": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", + "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", + "requires": { + "@chakra-ui/anatomy": "2.0.7", + "@ctrl/tinycolor": "^3.4.0" + } + }, + "@chakra-ui/theme-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.1.tgz", + "integrity": "sha512-NDwzgTPxm+v3PAJlSSU1MORHLMqO9vsRJ+ObELD5wpvE9aEyRziN/AZSoK2oLwCQMPEiU7R99K5ij1E6ptMt7w==", + "requires": { + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.14", + "lodash.mergewith": "4.6.2" + } + }, + "@chakra-ui/toast": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-4.0.0.tgz", + "integrity": "sha512-abeeloJac5T9WK2IN76fEM5FSRH+erNXln2HqDf5wLBn33avSBXWyTiUL8riVSUqto0lrIn6FuK/MmKo0DH4og==", + "requires": { + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-use-timeout": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.14" + } + }, + "@chakra-ui/tooltip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", + "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", + "requires": { + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/transition": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.11.tgz", + "integrity": "sha512-O0grc162LARPurjz1R+J+zr4AAKsVwN5+gaqLfZLMWg6TpvczJhwEA2fLCNAdkC/gomere390bJsy52xfUacUw==", + "requires": {} + }, + "@chakra-ui/utils": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", + "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", + "requires": { + "@types/lodash.mergewith": "4.6.6", + "css-box-model": "1.2.1", + "framesync": "5.3.0", + "lodash.mergewith": "4.6.2" + } + }, + "@chakra-ui/visually-hidden": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", + "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", + "requires": {} + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "@electron/get": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^3.0.0", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + } + }, + "@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } + } + }, + "@emotion/cache": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", + "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", + "requires": { + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.1", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.1.3" + } + }, + "@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "requires": { + "@emotion/memoize": "^0.8.0" + } + }, + "@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "@emotion/react": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz", + "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/cache": "^11.10.5", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "requires": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "@emotion/sheet": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", + "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + }, + "@emotion/styled": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz", + "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" + } + }, + "@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "requires": {} + }, + "@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + }, + "@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + }, + "@esbuild/android-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz", + "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz", + "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@heroicons/react": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.12.tgz", + "integrity": "sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg==", + "requires": {} + }, + "@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jimp/bmp": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.2.tgz", + "integrity": "sha512-4g9vW45QfMoGhLVvaFj26h4e7cC+McHUQwyFQmNTLW4FfC1OonN9oUr2m/FEDGkTYKR7aqdXR5XUqqIkHWLaFw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "bmp-js": "^0.1.0" + } + }, + "@jimp/core": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.2.tgz", + "integrity": "sha512-dp7HcyUMzjXphXYodI6PaXue+I9PXAavbb+AN+1XqFbotN22Z12DosNPEyy+UhLY/hZiQQqUkEaJHkvV31rs+w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "@jimp/custom": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.2.tgz", + "integrity": "sha512-GtNwOs4hcVS2GIbqRUf42rUuX07oLB92cj7cqxZb0ZGWwcwhnmSW0TFLAkNafXmqn9ug4VTpNvcJSUdiuECVKg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.2" + } + }, + "@jimp/gif": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.2.tgz", + "integrity": "sha512-TMdyT9Q0paIKNtT7c5KzQD29CNCsI/t8ka28jMrBjEK7j5RRTvBfuoOnHv7pDJRCjCIqeUoaUSJ7QcciKic6CA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.2.tgz", + "integrity": "sha512-BW5gZydgq6wdIwHd+3iUNgrTklvoQc/FUKSj9meM6A0FU21lUaansRX5BDdJqHkyXJLnnlDGwDt27J+hQuBAVw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "jpeg-js": "^0.4.2" + } + }, + "@jimp/plugin-blit": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.2.tgz", + "integrity": "sha512-Z31rRfV80gC/r+B/bOPSVVpJEWXUV248j7MdnMOFLu4vr8DMqXVo9jYqvwU/s4LSTMAMXqm4Jg6E/jQfadPKAg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-blur": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.2.tgz", + "integrity": "sha512-ShkJCAzRI+1fAKPuLLgEkixpSpVmKTYaKEFROUcgmrv9AansDXGNCupchqVMTdxf8zPyW8rR1ilvG3OJobufLQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-circle": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.2.tgz", + "integrity": "sha512-6T4z/48F4Z5+YwAVCLOvXQcyGmo0E3WztxCz6XGQf66r4JJK78+zcCDYZFLMx0BGM0091FogNK4QniP8JaOkrA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-color": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.2.tgz", + "integrity": "sha512-6oBV0g0J17/7E+aTquvUsgSc85nUbUi+64tIK5eFIDzvjhlqhjGNJYlc46KJMCWIs61qRJayQoZdL/iT/iQuGQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.2.tgz", + "integrity": "sha512-pLcxO3hVN3LCEhMNvpZ9B7xILHVlS433Vv16zFFJxLRqZdYvPLsc+ZzJhjAiHHuEjVblQrktHE3LGeQwGJPo0w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-cover": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.2.tgz", + "integrity": "sha512-gzWM7VvYeI8msyiwbUZxH+sGQEgO6Vd6adGxZ0CeKX00uQOe5lDzxb1Wjx7sHcJGz8a/5fmAuwz7rdDtpDUbkw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-crop": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.2.tgz", + "integrity": "sha512-qCd3hfMEE+Z2EuuyXewgXRTtKJGIerWzc1zLEJztsUkPz5i73IGgkOL+mrNutZwGaXZbm+8SwUaGb46sxAO6Tw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-displace": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.2.tgz", + "integrity": "sha512-6nXdvNNjCdD95v2o3/jPeur903dz08lG4Y8gmr5oL2yVv9LSSbMonoXYrR/ASesdyXqGdXJLU4NL+yZs4zUqbQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-dither": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.2.tgz", + "integrity": "sha512-DERpIzy21ZanMkVsD0Tdy8HQLbD1E41OuvIzaMRoW4183PA6AgGNlrQoFTyXmzjy6FTy1SxaQgTEdouInAWZ9Q==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-fisheye": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.2.tgz", + "integrity": "sha512-Df7PsGIwiIpQu3EygYCnaJyTfOwvwtYV3cmYJS7yFLtdiFUuod+hlSo5GkwEPLAy+QBxhUbDuUqnsWo4NQtbiQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-flip": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.2.tgz", + "integrity": "sha512-+2uC8ioVQUr06mnjSWraskz2L33nJHze35LkQ8ZNsIpoZLkgvfiWatqAs5bj+1jGI/9kxoCFAaT1Is0f+a4/rw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.2.tgz", + "integrity": "sha512-2mnuDSg4ZEH8zcJig7DZZf4st/cYmQ5UYJKP76iGhZ+6JDACk6uejwAgT5xHecNhkVAaXMdCybA2eknH/9OE1w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-invert": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.2.tgz", + "integrity": "sha512-xFvHbVepTY/nus+6yXiYN1iq+UBRkT0MdnObbiQPstUrAsz0Imn6MWISsnAyMvcNxHGrxaxjuU777JT/esM0gg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-mask": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.2.tgz", + "integrity": "sha512-AbdO85xxhfgEDdxYKpUotEI9ixiCMaIpfYHD5a5O/VWeimz2kuwhcrzlHGiyq1kKAgRcl0WEneTCZAHVSyvPKA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-normalize": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.2.tgz", + "integrity": "sha512-+ItBWFwmB0Od7OfOtTYT1gm543PpHUgU8/DN55z83l1JqS0OomDJAe7BmCppo2405TN6YtVm/csXo7p4iWd/SQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-print": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.2.tgz", + "integrity": "sha512-ifTGEeJ5UZTCiqC70HMeU3iXk/vsOmhWiwVGOXSFXhFeE8ZpDWvlmBsrMYnRrJGuaaogHOIrrQPI+kCdDBSBIQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "load-bmfont": "^1.4.0" + } + }, + "@jimp/plugin-resize": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.2.tgz", + "integrity": "sha512-gE4N9l6xuwzacFZ2EPCGZCJ/xR+aX2V7GdMndIl/6kYIw5/eib1SFuF9AZLvIPSFuE1FnGo8+vT0pr++SSbhYg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-rotate": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.2.tgz", + "integrity": "sha512-/CTEYkR1HrgmnE0VqPhhbBARbDAfFX590LWGIpxcYIYsUUGQCadl+8Qo4UX13FH0Nt8UHEtPA+O2x08uPYg9UA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-scale": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.2.tgz", + "integrity": "sha512-3inuxfrlquyLaqFdiiiQNJUurR0WbvN5wAf1qcYX2LubG1AG8grayYD6H7XVoxfUGTZXh1kpmeirEYlqA2zxcw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-shadow": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.2.tgz", + "integrity": "sha512-Q0aIs2/L6fWMcEh9Ms73u34bT1hyUMw/oxaVoIzOLo6/E8YzCs2Bi63H0/qaPS0MQpEppI++kvosPbblABY79w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugin-threshold": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.2.tgz", + "integrity": "sha512-gyOwmBgjtMPvcuyOhkP6dOGWbQdaTfhcBRN22mYeI/k/Wh/Zh1OI21F6eKLApsVRmg15MoFnkrCz64RROC34sw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/plugins": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.2.tgz", + "integrity": "sha512-zCvYtCgctmC0tkYEu+y+kSwSIZBsNznqJ3/3vkpzxdyjd6wCfNY5Qc/68MPrLc1lmdeGo4cOOTYHG7Vc6myzRw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.2", + "@jimp/plugin-blur": "^0.16.2", + "@jimp/plugin-circle": "^0.16.2", + "@jimp/plugin-color": "^0.16.2", + "@jimp/plugin-contain": "^0.16.2", + "@jimp/plugin-cover": "^0.16.2", + "@jimp/plugin-crop": "^0.16.2", + "@jimp/plugin-displace": "^0.16.2", + "@jimp/plugin-dither": "^0.16.2", + "@jimp/plugin-fisheye": "^0.16.2", + "@jimp/plugin-flip": "^0.16.2", + "@jimp/plugin-gaussian": "^0.16.2", + "@jimp/plugin-invert": "^0.16.2", + "@jimp/plugin-mask": "^0.16.2", + "@jimp/plugin-normalize": "^0.16.2", + "@jimp/plugin-print": "^0.16.2", + "@jimp/plugin-resize": "^0.16.2", + "@jimp/plugin-rotate": "^0.16.2", + "@jimp/plugin-scale": "^0.16.2", + "@jimp/plugin-shadow": "^0.16.2", + "@jimp/plugin-threshold": "^0.16.2", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.2.tgz", + "integrity": "sha512-sFOtOSz/tzDwXEChFQ/Nxe+0+vG3Tj0eUxnZVDUG/StXE9dI8Bqmwj3MIa0EgK5s+QG3YlnDOmlPUa4JqmeYeQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "pngjs": "^3.3.3" + }, + "dependencies": { + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + } + } + }, + "@jimp/tiff": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.2.tgz", + "integrity": "sha512-ADcdqmtZF+U2YoaaHTzFX8D6NFpmN4WZUT0BPMerEuY7Cq8QoLYU22z2h034FrVW+Rbi1b3y04sB9iDiQAlf2w==", + "requires": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.2.tgz", + "integrity": "sha512-0Ue5Sq0XnDF6TirisWv5E+8uOnRcd8vRLuwocJOhF76NIlcQrz+5r2k2XWKcr3d+11n28dHLXW5TKSqrUopxhA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.2", + "@jimp/gif": "^0.16.2", + "@jimp/jpeg": "^0.16.2", + "@jimp/png": "^0.16.2", + "@jimp/tiff": "^0.16.2", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.2.tgz", + "integrity": "sha512-XENrPvmigiXZQ8E2nxJqO6UVvWBLzbNwyYi3Y8Q1IECoYhYI3kgOQ0fmy4G269Vz1V0omh1bNmC42r4OfXg1Jg==", + "requires": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@motionone/animation": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", + "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", + "requires": { + "@motionone/easing": "^10.14.0", + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "@motionone/dom": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", + "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", + "requires": { + "@motionone/animation": "^10.13.1", + "@motionone/generators": "^10.13.1", + "@motionone/types": "^10.13.0", + "@motionone/utils": "^10.13.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "@motionone/easing": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", + "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", + "requires": { + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "@motionone/generators": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", + "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", + "requires": { + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "@motionone/types": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", + "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" + }, + "@motionone/utils": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", + "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", + "requires": { + "@motionone/types": "^10.14.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "@nestjs/common": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", + "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", + "dev": true, + "requires": { + "axios": "0.26.1", + "iterare": "1.2.1", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "dependencies": { + "axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.8" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "@nestjs/core": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", + "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", + "dev": true, + "requires": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "object-hash": "3.0.0", + "path-to-regexp": "3.2.0", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@nut-tree/libnut": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.3.0.tgz", + "integrity": "sha512-EAbwcA3xv4zZWX8EmcKzWlWON1hf/IxJsMAdApRqObhoarpBQO28DoHAxZW7HQPP/T9S1YrLHONjGxwUzippQQ==", + "requires": { + "@nut-tree/libnut-darwin": "2.3.0", + "@nut-tree/libnut-linux": "2.3.0", + "@nut-tree/libnut-win32": "2.3.0" + } + }, + "@nut-tree/libnut-darwin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.3.0.tgz", + "integrity": "sha512-hbNW0WN5Olrrcl59sNXCdJCHmaclwk5G/FMQcP8NoTNWkSv2L+zxXZ5dNt13DErCv9HCvMrof20nBz82LArNXg==", + "requires": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "dependencies": { + "node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + } + } + }, + "@nut-tree/libnut-linux": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.3.0.tgz", + "integrity": "sha512-Hc2GsW4/BNYViqqaaaQCytj2C4NWNCJGGhCbznjyqI2cAHU3y5Hx+Frlkcnohfo+ofyOZOlPDQSxtP+E4tmVOw==", + "requires": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "dependencies": { + "node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + } + } + }, + "@nut-tree/libnut-win32": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.3.0.tgz", + "integrity": "sha512-2v9fBVekJn9ktyI2IWmYlLzNqGBdkaSscfqKmT7Kdzshh6nbsqeawRmhFc4IgTOJBSruz7oc6AWAWsRk9OL3FQ==", + "requires": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "dependencies": { + "node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + } + } + }, + "@nut-tree/nut-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-2.3.0.tgz", + "integrity": "sha512-QOQeuwlB1e+Ctj7h0lcIzxeWs1tR8DACxCURDsS/TxsYP0SqNBsc+ov4GjwJGOI80WOe00gXahnqVPie4qjfSg==", + "requires": { + "@nut-tree/libnut": "2.3.0", + "clipboardy": "2.3.0", + "jimp": "0.16.2", + "node-abort-controller": "2.0.0" + } + }, + "@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + } + }, + "@openapitools/openapi-generator-cli": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", + "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", + "dev": true, + "requires": { + "@nestjs/common": "8.4.4", + "@nestjs/core": "8.4.4", + "@nuxtjs/opencollective": "0.3.2", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.3", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.0.1", + "glob": "7.1.6", + "inquirer": "8.2.2", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.5.5", + "tslib": "2.0.3" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" + } + }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "@react-hook/debounce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@react-hook/debounce/-/debounce-3.0.0.tgz", + "integrity": "sha512-ir/kPrSfAzY12Gre0sOHkZ2rkEmM4fS5M5zFxCi4BnCeXh2nvx9Ujd+U4IGpKCuPA+EQD0pg1eK2NGLvfWejag==", + "requires": { + "@react-hook/latest": "^1.0.2" + } + }, + "@react-hook/event": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@react-hook/event/-/event-1.2.6.tgz", + "integrity": "sha512-JUL5IluaOdn5w5Afpe/puPa1rj8X6udMlQ9dt4hvMuKmTrBS1Ya6sb4sVgvfe2eU4yDuOfAhik8xhbcCekbg9Q==", + "requires": {} + }, + "@react-hook/latest": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz", + "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==", + "requires": {} + }, + "@react-hook/throttle": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-hook/throttle/-/throttle-2.2.0.tgz", + "integrity": "sha512-LJ5eg+yMV8lXtqK3lR+OtOZ2WH/EfWvuiEEu0M3bhR7dZRfTyEJKxH1oK9uyBxiXPtWXiQggWbZirMCXam51tg==", + "requires": { + "@react-hook/latest": "^1.0.2" + } + }, + "@react-hook/window-size": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@react-hook/window-size/-/window-size-3.1.1.tgz", + "integrity": "sha512-yWnVS5LKnOUIrEsI44oz3bIIUYqflamPL27n+k/PC//PsX/YeWBky09oPeAoc9As6jSH16Wgo8plI+ECZaHk3g==", + "requires": { + "@react-hook/debounce": "^3.0.0", + "@react-hook/event": "^1.2.1", + "@react-hook/throttle": "^2.2.0" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@smartpointer-desktop/eslintrc": { + "version": "file:packages/eslintrc", + "requires": { + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0", + "eslint": "8.26.0", + "eslint-config-prettier": "8.5.0", + "eslint-import-resolver-typescript": "3.5.2", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-react": "7.31.10", + "eslint-plugin-react-hooks": "4.6.0" + } + }, + "@smartpointer-desktop/main": { + "version": "file:packages/main", + "requires": { + "@nut-tree/nut-js": "2.3.0", + "@openapitools/openapi-generator-cli": "2.5.2", + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0", + "@stomp/stompjs": "6.1.2", + "@types/sockjs-client": "1.5.1", + "axios": "1.1.3", + "sockjs-client": "1.6.1" + } + }, + "@smartpointer-desktop/preload": { + "version": "file:packages/preload", + "requires": { + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0", + "unplugin-auto-expose": "0.0.3" + } + }, + "@smartpointer-desktop/renderer": { + "version": "file:packages/renderer", + "requires": { + "@chakra-ui/react": "2.3.6", + "@emotion/react": "11.10.5", + "@emotion/styled": "11.10.5", + "@heroicons/react": "2.0.12", + "@react-hook/window-size": "3.1.1", + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0", + "@tsconfig/strictest": "*", + "@vitejs/plugin-react": "*", + "framer-motion": "7.6.2", + "qrcode": "1.5.1", + "react": "18.2.0", + "react-dom": "18.2.0", + "unplugin-auto-expose": "0.0.3" + } + }, + "@smartpointer-desktop/tsconfig": { + "version": "file:packages/tsconfig", + "requires": { + "@tsconfig/node16-strictest-esm": "1.0.3", + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0" + } + }, + "@stomp/stompjs": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", + "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@tsconfig/node16-strictest-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16-strictest-esm/-/node16-strictest-esm-1.0.3.tgz", + "integrity": "sha512-0/QTPDkKmE2dy0dMRstPCv4VJ+gUGgvMKzaWd5P3hgdlmPqYqe1pJxDGUlNYbSgUBlncIvvX+mIeZarokysNgg==", + "dev": true + }, + "@tsconfig/strictest": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-1.0.2.tgz", + "integrity": "sha512-IRKlC8cnP7zMz1SDBjyIVyPapkEGWLZ6wkF6Z8T+xU80P9sO5uGXlIUvtzjx+7ehPJRWxkB6CeIDwUfyqNtYkQ==", + "dev": true + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "optional": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/lodash": { + "version": "4.14.186", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz", + "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==" + }, + "@types/lodash.mergewith": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz", + "integrity": "sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "optional": true + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "@types/node": { + "version": "18.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", + "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "optional": true, + "peer": true + }, + "@types/react": { + "version": "18.0.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz", + "integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==", + "optional": true, + "peer": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "optional": true, + "peer": true + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@types/sockjs-client": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-bmZM6A1GPdjF0bcuIUC+50hZEMGkzMsiG9by6X9U+7IZFOiPtz7MJ9h05FSpPVxlj4i+TzzoG3ESo1FJlbLb6A==", + "dev": true + }, + "@types/verror": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", + "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", + "dev": true, + "optional": true + }, + "@types/yargs": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", + "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz", + "integrity": "sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/type-utils": "5.41.0", + "@typescript-eslint/utils": "5.41.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.41.0.tgz", + "integrity": "sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.41.0.tgz", + "integrity": "sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.41.0.tgz", + "integrity": "sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/utils": "5.41.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.41.0.tgz", + "integrity": "sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.41.0.tgz", + "integrity": "sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.41.0.tgz", + "integrity": "sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.41.0.tgz", + "integrity": "sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.41.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vitejs/plugin-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", + "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "dev": true, + "requires": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-jsx": "^7.19.0", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.26.7", + "react-refresh": "^0.14.0" + } + }, + "@zag-js/element-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz", + "integrity": "sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==" + }, + "@zag-js/focus-visible": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz", + "integrity": "sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==" + }, + "7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "dev": true + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==" + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "app-builder-lib": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", + "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", + "dev": true, + "requires": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.2.1", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.7", + "electron-osx-sign": "^0.6.0", + "electron-publish": "23.6.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.10", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.1.2", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.7", + "tar": "^6.1.11", + "temp-file": "^3.4.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" + }, + "are-we-there-yet": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", + "integrity": "sha512-Zfw6bteqM9gQXZ1BIWOgM8xEwMrUGoyL8nW13+O+OOgNX3YhuDN1GDgg1NzdTlmm3j+9sHy7uBZ12r+z9lXnZQ==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.0 || ^1.1.13" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "aria-hidden": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz", + "integrity": "sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==", + "requires": { + "tslib": "^2.0.0" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "asar": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + } + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "optional": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "axe-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.0.tgz", + "integrity": "sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==", + "dev": true + }, + "axios": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", + "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5" + } + }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" + }, + "boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g==" + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" + }, + "builder-util": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", + "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", + "dev": true, + "requires": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "builder-util-runtime": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", + "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "sax": "^1.2.4" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caniuse-lite": { + "version": "1.0.30001426", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz", + "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "ci-info": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", + "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "optional": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "cmake-js": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.1.0.tgz", + "integrity": "sha512-utmukLQftpgrCpGRCaHnkv4K27HZNNFqmBl4vnvccy0xp4c1erxjFU/Lq4wn5ngAhFZmpwBPQfoKWKThjSBiwg==", + "requires": { + "debug": "^4", + "fs-extra": "^5.0.0", + "is-iojs": "^1.0.1", + "lodash": "^4", + "memory-stream": "0", + "npmlog": "^1.2.0", + "rc": "^1.2.7", + "request": "^2.54.0", + "semver": "^5.0.3", + "splitargs": "0", + "tar": "^4", + "unzipper": "^0.8.13", + "url-join": "0", + "which": "^1.0.9", + "yargs": "^3.6.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==" + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg==", + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true + }, + "compare-versions": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", + "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "dev": true + }, + "compute-scroll-into-view": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", + "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "dev": true, + "requires": { + "easy-table": "1.1.0" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js-pure": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", + "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + } + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.1.0" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "requires": { + "tiny-invariant": "^1.0.6" + } + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "optional": true + }, + "detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, + "dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "requires": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "dmg-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", + "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", + "dev": true, + "requires": { + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "dmg-license": "^1.0.11", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "dev": true, + "optional": true, + "requires": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", + "dev": true, + "requires": { + "wcwidth": ">=1.0.1" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-21.2.0.tgz", + "integrity": "sha512-oKV4fo8l6jlOZ1cYZ4RpZz02ZxLuBo3SO7DH+FrJ8uDyCirP+eVJ/qlzu23odtNe0P7S/mYAZbC6abZHWoqtLg==", + "dev": true, + "requires": { + "@electron/get": "^1.14.1", + "@types/node": "^16.11.26", + "extract-zip": "^2.0.1" + }, + "dependencies": { + "@types/node": { + "version": "16.18.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.2.tgz", + "integrity": "sha512-KIGQJyya+opDCFvDSZMNNS899ov5jlNdtN7PypgHWeb8e+5vWISdwTRo/ClsNVlmDihzOGqFyNBDamUs7TQQCA==", + "dev": true + } + } + }, + "electron-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", + "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + "dev": true, + "requires": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "dmg-builder": "23.6.0", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "simple-update-notifier": "^1.0.7", + "yargs": "^17.5.1" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "electron-osx-sign": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", + "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "electron-publish": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", + "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + "dev": true, + "requires": { + "@types/fs-extra": "^9.0.11", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "optional": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz", + "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==", + "devOptional": true, + "requires": { + "@esbuild/android-arm": "0.15.12", + "@esbuild/linux-loong64": "0.15.12", + "esbuild-android-64": "0.15.12", + "esbuild-android-arm64": "0.15.12", + "esbuild-darwin-64": "0.15.12", + "esbuild-darwin-arm64": "0.15.12", + "esbuild-freebsd-64": "0.15.12", + "esbuild-freebsd-arm64": "0.15.12", + "esbuild-linux-32": "0.15.12", + "esbuild-linux-64": "0.15.12", + "esbuild-linux-arm": "0.15.12", + "esbuild-linux-arm64": "0.15.12", + "esbuild-linux-mips64le": "0.15.12", + "esbuild-linux-ppc64le": "0.15.12", + "esbuild-linux-riscv64": "0.15.12", + "esbuild-linux-s390x": "0.15.12", + "esbuild-netbsd-64": "0.15.12", + "esbuild-openbsd-64": "0.15.12", + "esbuild-sunos-64": "0.15.12", + "esbuild-windows-32": "0.15.12", + "esbuild-windows-64": "0.15.12", + "esbuild-windows-arm64": "0.15.12" + } + }, + "esbuild-android-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz", + "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz", + "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz", + "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz", + "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz", + "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz", + "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz", + "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz", + "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz", + "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz", + "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz", + "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz", + "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz", + "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz", + "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz", + "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz", + "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz", + "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz", + "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz", + "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz", + "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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.0", + "text-table": "^0.2.0" + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-import-resolver-typescript": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", + "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", + "is-glob": "^4.0.3", + "synckit": "^0.8.4" + }, + "dependencies": { + "globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + } + } + }, + "eslint-plugin-react": { + "version": "7.31.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", + "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "optional": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "focus-lock": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.3.tgz", + "integrity": "sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "framer-motion": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.6.2.tgz", + "integrity": "sha512-YRr+KaC+1MlLx7iArVyjZRpc0QXI7H0XIOJrdol+dF1+WLQJwS2sP04KGq808BG+byD36UAmAt4YqObE5YFLtw==", + "requires": { + "@emotion/is-prop-valid": "^0.8.2", + "@motionone/dom": "10.13.1", + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "popmotion": "11.0.5", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "requires": { + "tslib": "2.4.0" + } + } + } + }, + "framesync": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", + "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA==", + "requires": { + "ansi": "^0.3.0", + "has-unicode": "^2.0.0", + "lodash.pad": "^4.1.0", + "lodash.padend": "^4.1.0", + "lodash.padstart": "^4.1.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-tsconfig": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", + "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "requires": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "dev": true, + "optional": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "optional": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "optional": true, + "requires": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "requires": { + "@types/node": "16.9.1" + }, + "dependencies": { + "@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + } + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "inquirer": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", + "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-iojs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", + "integrity": "sha512-tLn1j3wYSL6DkvEI+V/j0pKohpa5jk+ER74v6S4SgCXnjS0WA+DoZbwZBrrhgwksMvtuwndyGeG5F8YMsoBzSA==" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "dev": true + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "jimp": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.2.tgz", + "integrity": "sha512-UpItBk81a92f8oEyoGYbO3YK4QcM0hoIyuGHmShoF9Ov63P5Qo7Q/X2xsAgnODmSuDJFOtrPtJd5GSWW4LKdOQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.2", + "@jimp/plugins": "^0.16.2", + "@jimp/types": "^0.16.2", + "regenerator-runtime": "^0.13.3" + } + }, + "jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + } + } + }, + "jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + } + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + }, + "lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==" + }, + "lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==" + }, + "lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "requires": { + "escape-string-regexp": "^4.0.0" + } + }, + "memory-stream": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", + "integrity": "sha512-q0D3m846qY6ZkIt+19ZemU5vH56lpOZZwoJc3AICARKh/menBuayQUjAGPrqtHQQMUYERSdOrej92J9kz7LgYA==", + "requires": { + "readable-stream": "~1.0.26-2" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mlly": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.14.tgz", + "integrity": "sha512-DgRgNUSX9NIxxCxygX4Xeg9C7GX7OUx1wuQ8cXx9o9LE0e9wrH+OZ9fcnrlEedsC/rtqry3ZhUddC759XD/L0w==", + "requires": { + "acorn": "^8.8.0", + "pathe": "^0.3.5", + "pkg-types": "^0.3.4", + "ufo": "^0.8.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "devOptional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-abort-controller": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", + "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==" + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "optional": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "optional": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + } + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + } + } + }, + "npmlog": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", + "integrity": "sha512-1J5KqSRvESP6XbjPaXt2H6qDzgizLTM7x0y1cXIjP2PpvdCqyNC7TO3cPRKsuYlElbi/DwkzRRdG2zpmE0IktQ==", + "requires": { + "ansi": "~0.3.0", + "are-we-there-yet": "~1.0.0", + "gauge": "~1.2.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pathe": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", + "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "requires": { + "pngjs": "^3.0.0" + }, + "dependencies": { + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + } + } + }, + "pkg-types": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz", + "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==", + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^0.5.16", + "pathe": "^0.3.9" + }, + "dependencies": { + "mlly": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz", + "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==", + "requires": { + "acorn": "^8.8.0", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "ufo": "^0.8.5" + } + } + } + }, + "plist": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", + "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", + "dev": true, + "requires": { + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + }, + "popmotion": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", + "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", + "requires": { + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + }, + "dependencies": { + "framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "requires": { + "tslib": "2.4.0" + } + } + } + }, + "postcss": { + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "devOptional": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, + "optional": true + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "requires": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + } + } + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-clientside-effect": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", + "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "requires": { + "@babel/runtime": "^7.12.13" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "react-focus-lock": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", + "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", + "requires": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.11.2", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.6", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true + }, + "react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "requires": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + }, + "react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "requires": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + } + }, + "react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "requires": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + } + }, + "read-config-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + "dev": true, + "requires": { + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + } + }, + "rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "devOptional": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "optional": true + }, + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "requires": { + "type-fest": "^0.13.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "optional": true + }, + "sockjs-client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", + "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", + "requires": { + "debug": "^3.2.7", + "eventsource": "^2.0.2", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "devOptional": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "splitargs": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", + "integrity": "sha512-UUFYD2oWbNwULH6WoVtLUOw8ch586B+HUqcsAjjjeoBQAM1bD4wZRXu01koaxyd8UeYpybWqW4h+lO1Okv40Tg==" + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-value-types": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", + "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", + "requires": { + "hey-listen": "^1.0.8", + "tslib": "2.4.0" + } + }, + "stylis": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", + "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + }, + "sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "requires": { + "debug": "^4.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "synckit": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", + "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "dev": true, + "requires": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.4.0" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "requires": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "requires": { + "tmp": "^0.2.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true + }, + "ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==" + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unplugin": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.9.5.tgz", + "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==", + "requires": { + "acorn": "^8.8.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.4.4" + } + }, + "unplugin-auto-expose": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/unplugin-auto-expose/-/unplugin-auto-expose-0.0.3.tgz", + "integrity": "sha512-UsZevvvS+N1/jSm+CDgMIdYP0ruB6rqIV16NnNfWh/UkStt+j7IxyfgkTEv2gKBFByE/TgAN43TUJZ1Lw8T9mQ==", + "requires": { + "magic-string": "^0.26.3", + "mlly": "0.5.14", + "unplugin": "0.9.5" + } + }, + "unzipper": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", + "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "~1.0.10", + "listenercount": "~1.0.1", + "readable-stream": "~2.1.5", + "setimmediate": "~1.0.4" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" + }, + "readable-stream": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "integrity": "sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw==", + "requires": { + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + } + } + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==" + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "requires": { + "tslib": "^2.0.0" + } + }, + "use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "requires": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + } + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + "dev": true + }, + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "requires": { + "pako": "^1.0.5" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vite": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.1.tgz", + "integrity": "sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==", + "devOptional": true, + "requires": { + "esbuild": "^0.15.9", + "fsevents": "~2.3.2", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "webpack-virtual-modules": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz", + "integrity": "sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg==" + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + } + } + }, + "xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yargs": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", + "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/desktop/package.json b/desktop/package.json index a4235eca..a82f18a2 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -1,82 +1,37 @@ { "private": true, "version": "1.0.0", - "main": "dist-electron/electron/main/app.js", + "main": "packages/main/dist/index.cjs", "name": "smartpointer", "productName": "smartpointer", "description": "手元のスマホをリモコン化する、共同プレゼンテーション支援ツール", "scripts": { - "dev": "cross-env NODE_ENV=prod vite", - "build": "tsc && vite build", - "codegen": "openapi-generator-cli generate -g typescript-axios -i http://localhost:8080/v3/api-docs/Public%20API -o ./electron/main/generated/http-client", - "lint": "eslint src electron", + "generate-electron-vendors": "cross-env ELECTRON_RUN_AS_NODE=1 electron --experimental-loader ts-node/esm scripts/generate-electron-vendors.mts", + "dev": "node --experimental-loader ts-node/esm scripts/watch.mts", + "build": "npm run build -ws --if-present", + "codegen": "npm run codegen -ws --if-present", + "lint": "eslint . --ext .ts,.tsx,mts", "format": "yarn check:format --write", + "check:format": "prettier . --check", + "check:type": "tsc", "code-check": "run-p lint check:*", - "check:format": "prettier src electron link.html --check", - "check:type": "tsc" - }, - "build": { - "extraResources": [ - "public/assets/**/*" - ], - "productName": "smartpointer", - "appId": "dev.abelab.smartpointer", - "mac": { - "artifactName": "${productName}-${version}-osx.${ext}", - "category": "public.app-category.productivity", - "target": [ - "dmg", - "zip" - ] - } - }, - "dependencies": { - "@chakra-ui/react": "2.3.6", - "@emotion/react": "11.10.4", - "@emotion/styled": "11.10.4", - "@heroicons/react": "^2.0.12", - "@nut-tree/nut-js": "^2.3.0", - "@react-hook/window-size": "3.1.1", - "@stomp/stompjs": "^6.1.2", - "axios": "^1.1.3", - "framer-motion": "7.6.1", - "qrcode": "^1.5.1", - "react": "18.2.0", - "react-dom": "18.2.0", - "sockjs-client": "^1.6.1" + "postinstall": "npm run generate-electron-vendors" }, "devDependencies": { - "@openapitools/openapi-generator-cli": "2.5.2", - "@tsconfig/strictest": "^1.0.2", - "@types/qrcode": "^1.5.0", - "@types/react": "18.0.21", - "@types/react-dom": "18.0.6", - "@types/sockjs-client": "^1.5.1", - "@types/ws": "^8.5.3", - "@typescript-eslint/eslint-plugin": "5.40.1", - "@typescript-eslint/parser": "5.40.1", - "@vitejs/plugin-react": "2.1.0", - "cross-env": "^7.0.3", - "electron": "^21.1.1", - "electron-builder": "^23.3.3", - "electron-reload": "^2.0.0-alpha.1", - "eslint": "8.25.0", - "eslint-config-prettier": "8.5.0", - "eslint-import-resolver-typescript": "3.5.2", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-jsx-a11y": "6.6.1", - "eslint-plugin-react": "7.31.10", - "eslint-plugin-react-hooks": "4.6.0", + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0", + "@types/node": "18.11.7", + "cross-env": "7.0.3", + "electron": "21.2.0", + "electron-builder": "23.6.0", + "eslint": "8.26.0", "npm-run-all": "4.1.5", "prettier": "2.7.1", + "ts-node": "10.9.1", "typescript": "4.8.4", - "vite": "3.1.8", - "vite-electron-plugin": "^0.4.6", - "vite-plugin-electron-renderer": "^0.10.1" + "vite": "3.2.1" }, - "debug": { - "env": { - "VITE_DEV_SERVER_URL": "http://127.0.0.1:7777" - } - } + "workspaces": [ + "packages/*" + ] } diff --git a/desktop/packages/eslintrc/index.js b/desktop/packages/eslintrc/index.js new file mode 100644 index 00000000..b30e1570 --- /dev/null +++ b/desktop/packages/eslintrc/index.js @@ -0,0 +1,58 @@ +module.exports = { + env: { + browser: true, + es2021: true, + node: true, + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:react/jsx-runtime", + "plugin:react-hooks/recommended", + "plugin:jsx-a11y/recommended", + "plugin:import/recommended", + "plugin:import/typescript", + "plugin:@typescript-eslint/recommended", + "prettier", + ], + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: "latest", + sourceType: "module", + }, + plugins: ["react", "import", "@typescript-eslint"], + settings: { + "import/resolver": { + typescript: {}, + }, + }, + rules: { + // restrict order of imports + "import/order": [ + "error", + { + pathGroups: [ + { + pattern: "@/**", + group: "internal", + position: "before", + }, + ], + groups: [ + ["builtin", "external"], + ["parent"], + ["internal"], + ["index", "sibling"], + ], + "newlines-between": "always", + alphabetize: { + order: "asc", + caseInsensitive: true, + }, + }, + ], + }, +}; diff --git a/desktop/packages/eslintrc/package.json b/desktop/packages/eslintrc/package.json new file mode 100644 index 00000000..1319e5b7 --- /dev/null +++ b/desktop/packages/eslintrc/package.json @@ -0,0 +1,19 @@ +{ + "name": "@smartpointer-desktop/eslintrc", + "version": "1.0.0", + "description": "", + "devDependencies": { + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0", + "eslint": "8.26.0", + "eslint-config-prettier": "8.5.0", + "eslint-import-resolver-typescript": "3.5.2", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-react": "7.31.10", + "eslint-plugin-react-hooks": "4.6.0" + }, + "scripts": {}, + "keywords": [], + "author": "" +} diff --git a/desktop/openapitools.json b/desktop/packages/main/openapitools.json similarity index 100% rename from desktop/openapitools.json rename to desktop/packages/main/openapitools.json diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json new file mode 100644 index 00000000..be226d15 --- /dev/null +++ b/desktop/packages/main/package.json @@ -0,0 +1,23 @@ +{ + "name": "@smartpointer-desktop/main", + "version": "1.0.0", + "description": "", + "scripts": { + "build": "vite build", + "codegen": "openapi-generator-cli generate -g typescript-axios -i http://localhost:8080/v3/api-docs/Public%20API -o ./src/generated/http-client" + }, + "keywords": [], + "author": "", + "dependencies": { + "@nut-tree/nut-js": "2.3.0", + "@stomp/stompjs": "6.1.2", + "axios": "1.1.3", + "sockjs-client": "1.6.1" + }, + "devDependencies": { + "@openapitools/openapi-generator-cli": "2.5.2", + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0", + "@types/sockjs-client": "1.5.1" + } +} diff --git a/desktop/electron/main/AppState.ts b/desktop/packages/main/src/AppState.ts similarity index 100% rename from desktop/electron/main/AppState.ts rename to desktop/packages/main/src/AppState.ts diff --git a/desktop/electron/main/api.ts b/desktop/packages/main/src/api.ts similarity index 89% rename from desktop/electron/main/api.ts rename to desktop/packages/main/src/api.ts index 6b8d9704..863a350f 100644 --- a/desktop/electron/main/api.ts +++ b/desktop/packages/main/src/api.ts @@ -3,7 +3,7 @@ import axios from "axios"; import { Configuration, RoomApi } from "./generated/http-client"; const API_URL = - process.env["NODE_ENV"] === "development" + process.env["USE_DEV_BACKEND"] === "true" ? "http://localhost:8080" : "https://smartpointer.abelab.dev"; diff --git a/desktop/electron/main/generated/http-client/.gitignore b/desktop/packages/main/src/generated/http-client/.gitignore similarity index 100% rename from desktop/electron/main/generated/http-client/.gitignore rename to desktop/packages/main/src/generated/http-client/.gitignore diff --git a/desktop/electron/main/generated/http-client/.npmignore b/desktop/packages/main/src/generated/http-client/.npmignore similarity index 100% rename from desktop/electron/main/generated/http-client/.npmignore rename to desktop/packages/main/src/generated/http-client/.npmignore diff --git a/desktop/electron/main/generated/http-client/.openapi-generator-ignore b/desktop/packages/main/src/generated/http-client/.openapi-generator-ignore similarity index 100% rename from desktop/electron/main/generated/http-client/.openapi-generator-ignore rename to desktop/packages/main/src/generated/http-client/.openapi-generator-ignore diff --git a/desktop/electron/main/generated/http-client/.openapi-generator/FILES b/desktop/packages/main/src/generated/http-client/.openapi-generator/FILES similarity index 100% rename from desktop/electron/main/generated/http-client/.openapi-generator/FILES rename to desktop/packages/main/src/generated/http-client/.openapi-generator/FILES diff --git a/desktop/electron/main/generated/http-client/.openapi-generator/VERSION b/desktop/packages/main/src/generated/http-client/.openapi-generator/VERSION similarity index 100% rename from desktop/electron/main/generated/http-client/.openapi-generator/VERSION rename to desktop/packages/main/src/generated/http-client/.openapi-generator/VERSION diff --git a/desktop/electron/main/generated/http-client/api.ts b/desktop/packages/main/src/generated/http-client/api.ts similarity index 80% rename from desktop/electron/main/generated/http-client/api.ts rename to desktop/packages/main/src/generated/http-client/api.ts index 03e826a9..50b91115 100644 --- a/desktop/electron/main/generated/http-client/api.ts +++ b/desktop/packages/main/src/generated/http-client/api.ts @@ -206,6 +206,40 @@ export const RoomApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * ルーム削除API + * @summary ルーム削除API + * @param {string} roomId ルームID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteRoom: async (roomId: string, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'roomId' is not null or undefined + assertParamExists('deleteRoom', 'roomId', roomId) + const localVarPath = `/api/rooms/{room_id}` + .replace(`{${"room_id"}}`, encodeURIComponent(String(roomId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -275,6 +309,17 @@ export const RoomApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.createRoom(options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * ルーム削除API + * @summary ルーム削除API + * @param {string} roomId ルームID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async deleteRoom(roomId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteRoom(roomId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * ルーム入室API * @summary ルーム入室API @@ -306,6 +351,16 @@ export const RoomApiFactory = function (configuration?: Configuration, basePath? createRoom(options?: any): AxiosPromise { return localVarFp.createRoom(options).then((request) => request(axios, basePath)); }, + /** + * ルーム削除API + * @summary ルーム削除API + * @param {string} roomId ルームID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteRoom(roomId: string, options?: any): AxiosPromise { + return localVarFp.deleteRoom(roomId, options).then((request) => request(axios, basePath)); + }, /** * ルーム入室API * @summary ルーム入室API @@ -338,6 +393,18 @@ export class RoomApi extends BaseAPI { return RoomApiFp(this.configuration).createRoom(options).then((request) => request(this.axios, this.basePath)); } + /** + * ルーム削除API + * @summary ルーム削除API + * @param {string} roomId ルームID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof RoomApi + */ + public deleteRoom(roomId: string, options?: AxiosRequestConfig) { + return RoomApiFp(this.configuration).deleteRoom(roomId, options).then((request) => request(this.axios, this.basePath)); + } + /** * ルーム入室API * @summary ルーム入室API diff --git a/desktop/electron/main/generated/http-client/base.ts b/desktop/packages/main/src/generated/http-client/base.ts similarity index 100% rename from desktop/electron/main/generated/http-client/base.ts rename to desktop/packages/main/src/generated/http-client/base.ts diff --git a/desktop/electron/main/generated/http-client/common.ts b/desktop/packages/main/src/generated/http-client/common.ts similarity index 100% rename from desktop/electron/main/generated/http-client/common.ts rename to desktop/packages/main/src/generated/http-client/common.ts diff --git a/desktop/electron/main/generated/http-client/configuration.ts b/desktop/packages/main/src/generated/http-client/configuration.ts similarity index 100% rename from desktop/electron/main/generated/http-client/configuration.ts rename to desktop/packages/main/src/generated/http-client/configuration.ts diff --git a/desktop/electron/main/generated/http-client/git_push.sh b/desktop/packages/main/src/generated/http-client/git_push.sh similarity index 100% rename from desktop/electron/main/generated/http-client/git_push.sh rename to desktop/packages/main/src/generated/http-client/git_push.sh diff --git a/desktop/electron/main/generated/http-client/index.ts b/desktop/packages/main/src/generated/http-client/index.ts similarity index 100% rename from desktop/electron/main/generated/http-client/index.ts rename to desktop/packages/main/src/generated/http-client/index.ts diff --git a/desktop/electron/main/app.ts b/desktop/packages/main/src/index.ts similarity index 100% rename from desktop/electron/main/app.ts rename to desktop/packages/main/src/index.ts diff --git a/desktop/electron/main/link.ts b/desktop/packages/main/src/link.ts similarity index 100% rename from desktop/electron/main/link.ts rename to desktop/packages/main/src/link.ts diff --git a/desktop/electron/main/menu/template.ts b/desktop/packages/main/src/menu/template.ts similarity index 76% rename from desktop/electron/main/menu/template.ts rename to desktop/packages/main/src/menu/template.ts index d6f22656..789eb31f 100644 --- a/desktop/electron/main/menu/template.ts +++ b/desktop/packages/main/src/menu/template.ts @@ -1,8 +1,8 @@ import type { MenuItemConstructorOptions } from "electron"; -import type AppState from "../AppState"; -// import { toggleInviteLinkWindowDevTools } from "../link"; -// import { toggleOverlayWindowDevTools } from "../pointer"; +import type { AppState } from "../AppState"; +import { toggleInviteLinkWindowDevTools } from "../link"; +import { toggleOverlayWindowDevTools } from "../pointer"; const renderDefaultMenuTemplate = ({ appState, @@ -56,19 +56,19 @@ export const renderMenuTemplate = ({ : renderDefaultMenuTemplate({ appState, handleClickCreateRoom })), { type: "separator" }, - // { - // label: "開発者ツールの表示切り替え", - // submenu: [ - // { - // label: "オーバレイ", - // click: toggleOverlayWindowDevTools, - // }, - // { - // label: "招待リンク", - // click: toggleInviteLinkWindowDevTools, - // }, - // ], - // }, + { + label: "開発者ツールの表示切り替え", + submenu: [ + { + label: "オーバレイ", + click: toggleOverlayWindowDevTools, + }, + { + label: "招待リンク", + click: toggleInviteLinkWindowDevTools, + }, + ], + }, { type: "separator" }, { role: "quit", diff --git a/desktop/electron/main/menu/tray.ts b/desktop/packages/main/src/menu/tray.ts similarity index 70% rename from desktop/electron/main/menu/tray.ts rename to desktop/packages/main/src/menu/tray.ts index 22f71e6f..06ac0517 100644 --- a/desktop/electron/main/menu/tray.ts +++ b/desktop/packages/main/src/menu/tray.ts @@ -1,7 +1,7 @@ -import { app, Menu, Tray } from "electron"; +import { Menu, Tray } from "electron"; import { join } from "path"; -import { publicPath } from "../path"; +import { buildResourcesPath } from "../path"; import { renderMenuTemplate } from "./template"; @@ -9,9 +9,7 @@ export const createTray = ({ appState, ...menuTemplateParam }: Parameters[0]) => { - const iconPath = app.isPackaged - ? join(process.resourcesPath!, "public", "assets", "menu-bar-icon.png") - : join(publicPath, "assets", "menu-bar-icon.png"); + const iconPath = join(buildResourcesPath, "menu-bar-icon.png"); const tray = new Tray(iconPath); tray.setToolTip("スマートポインター"); diff --git a/desktop/electron/main/pagination.ts b/desktop/packages/main/src/pagination.ts similarity index 100% rename from desktop/electron/main/pagination.ts rename to desktop/packages/main/src/pagination.ts diff --git a/desktop/packages/main/src/path.ts b/desktop/packages/main/src/path.ts new file mode 100644 index 00000000..fd7f224f --- /dev/null +++ b/desktop/packages/main/src/path.ts @@ -0,0 +1,7 @@ +import { app } from "electron"; +import { join } from "path"; + +export const buildResourcesPath = join( + app.isPackaged ? process.resourcesPath : app.getAppPath(), + "buildResources" +); diff --git a/desktop/electron/main/pointer.ts b/desktop/packages/main/src/pointer.ts similarity index 100% rename from desktop/electron/main/pointer.ts rename to desktop/packages/main/src/pointer.ts diff --git a/desktop/electron/main/room.ts b/desktop/packages/main/src/room.ts similarity index 100% rename from desktop/electron/main/room.ts rename to desktop/packages/main/src/room.ts diff --git a/desktop/electron/main/stomp.ts b/desktop/packages/main/src/stomp.ts similarity index 86% rename from desktop/electron/main/stomp.ts rename to desktop/packages/main/src/stomp.ts index a1e0dd2b..5c210f0f 100644 --- a/desktop/electron/main/stomp.ts +++ b/desktop/packages/main/src/stomp.ts @@ -2,7 +2,7 @@ import { Client } from "@stomp/stompjs"; import SockJS from "sockjs-client"; const brokerURL = - process.env["NODE_ENV"] === "development" + process.env["USE_DEV_BACKEND"] === "true" ? "http://localhost:8080/ws" : "https://smartpointer.abelab.dev/ws"; diff --git a/desktop/electron/main/types.ts b/desktop/packages/main/src/types.ts similarity index 100% rename from desktop/electron/main/types.ts rename to desktop/packages/main/src/types.ts diff --git a/desktop/packages/main/src/types/env.d.ts b/desktop/packages/main/src/types/env.d.ts new file mode 100644 index 00000000..3830806c --- /dev/null +++ b/desktop/packages/main/src/types/env.d.ts @@ -0,0 +1,22 @@ +/// + +/** + * Describes all existing environment variables and their types. + * Required for Code completion/intellisense and type checking. + * + * Note: To prevent accidentally leaking env variables to the client, only variables prefixed with `VITE_` are exposed to your Vite-processed code. + * + * @see https://github.com/vitejs/vite/blob/cab55b32de62e0de7d7789e8c2a1f04a8eae3a3f/packages/vite/types/importMeta.d.ts#L62-L69 Base Interface. + * @see https://vitejs.dev/guide/env-and-mode.html#env-files Vite Env Variables Doc. + */ +interface ImportMetaEnv { + /** + * URL where `renderer` web page is running. + * This variable is initialized in scripts/watch.ts + */ + readonly VITE_DEV_SERVER_URL: undefined | string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/desktop/electron/main/window.ts b/desktop/packages/main/src/window.ts similarity index 59% rename from desktop/electron/main/window.ts rename to desktop/packages/main/src/window.ts index ca110eab..c9463061 100644 --- a/desktop/electron/main/window.ts +++ b/desktop/packages/main/src/window.ts @@ -1,12 +1,12 @@ -import { app, BrowserWindow } from "electron"; +import type { BrowserWindow } from "electron"; -import { distPath } from "./path"; +const base = + import.meta.env.DEV && import.meta.env.VITE_DEV_SERVER_URL !== undefined + ? import.meta.env.VITE_DEV_SERVER_URL + : new URL("../renderer/dist", "file://" + __dirname).toString(); const getURL = (fileName: string, params?: { [K in string]: string }) => { - const url = new URL( - fileName, - app.isPackaged ? `file://${distPath}` : "http://localhost:7777" - ); + const url = new URL(fileName, base); if (params !== undefined) { Object.entries(params).forEach(([key, value]) => { diff --git a/desktop/packages/main/tsconfig.json b/desktop/packages/main/tsconfig.json new file mode 100644 index 00000000..fd510c26 --- /dev/null +++ b/desktop/packages/main/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@smartpointer-desktop/tsconfig/node", + "include": ["src/**/*", "vite.config.ts"], + "exclude": ["src/generated/**/*"], + "compilerOptions": { + "importsNotUsedAsValues": "remove", + "exactOptionalPropertyTypes": false, + "noImplicitOverride": false, + "baseUrl": ".", + "paths": { + "@/*": ["*"] + } + } +} diff --git a/desktop/packages/main/vite.config.ts b/desktop/packages/main/vite.config.ts new file mode 100644 index 00000000..451c2fd1 --- /dev/null +++ b/desktop/packages/main/vite.config.ts @@ -0,0 +1,37 @@ +import { join } from "node:path"; +import { defineConfig } from "vite"; + +import { node } from "../../.electron-vendors.cache.json"; + +const PACKAGE_ROOT = __dirname; + +export default defineConfig({ + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- MODE is set by scripts/watch + mode: process.env["MODE"]!, + root: PACKAGE_ROOT, + envDir: process.cwd(), + resolve: { + alias: { + "@/": join(PACKAGE_ROOT, "src") + "/", + }, + }, + build: { + ssr: true, + sourcemap: "inline", + target: `node${node}`, + outDir: "dist", + assetsDir: ".", + minify: process.env["MODE"] !== "development", + lib: { + entry: "src/index.ts", + formats: ["cjs"], + }, + rollupOptions: { + output: { + entryFileNames: "[name].cjs", + }, + }, + emptyOutDir: true, + reportCompressedSize: false, + }, +}); diff --git a/desktop/packages/preload/package.json b/desktop/packages/preload/package.json new file mode 100644 index 00000000..27e22ccc --- /dev/null +++ b/desktop/packages/preload/package.json @@ -0,0 +1,17 @@ +{ + "name": "@smartpointer-desktop/preload", + "version": "1.0.0", + "description": "", + "devDependencies": { + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0" + }, + "scripts": { + "build": "vite build" + }, + "keywords": [], + "author": "", + "dependencies": { + "unplugin-auto-expose": "0.0.3" + } +} diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/desktop/packages/preload/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/desktop/packages/preload/tsconfig.json b/desktop/packages/preload/tsconfig.json new file mode 100644 index 00000000..588e1186 --- /dev/null +++ b/desktop/packages/preload/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@smartpointer-desktop/tsconfig/node", + "include": ["src/**/*", "vite.config.ts"] +} diff --git a/desktop/packages/preload/vite.config.ts b/desktop/packages/preload/vite.config.ts new file mode 100644 index 00000000..589c3839 --- /dev/null +++ b/desktop/packages/preload/vite.config.ts @@ -0,0 +1,32 @@ +import { preload } from "unplugin-auto-expose"; +import { defineConfig } from "vite"; + +import { chrome } from "../../.electron-vendors.cache.json"; + +const PACKAGE_ROOT = __dirname; + +export default defineConfig({ + mode: process.env["MODE"]!, + root: PACKAGE_ROOT, + envDir: process.cwd(), + build: { + ssr: true, + sourcemap: "inline", + target: `chrome${chrome}`, + outDir: "dist", + assetsDir: ".", + minify: process.env["MODE"] !== "development", + lib: { + entry: "src/index.ts", + formats: ["cjs"], + }, + rollupOptions: { + output: { + entryFileNames: "[name].cjs", + }, + }, + emptyOutDir: true, + reportCompressedSize: false, + }, + plugins: [preload.vite()], +}); diff --git a/desktop/link.html b/desktop/packages/renderer/link.html similarity index 100% rename from desktop/link.html rename to desktop/packages/renderer/link.html diff --git a/desktop/overlay.html b/desktop/packages/renderer/overlay.html similarity index 100% rename from desktop/overlay.html rename to desktop/packages/renderer/overlay.html diff --git a/desktop/packages/renderer/package.json b/desktop/packages/renderer/package.json new file mode 100644 index 00000000..bbf72882 --- /dev/null +++ b/desktop/packages/renderer/package.json @@ -0,0 +1,28 @@ +{ + "name": "@smartpointer-desktop/renderer", + "version": "1.0.0", + "description": "", + "devDependencies": { + "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/tsconfig": "1.0.0", + "@tsconfig/strictest": "1.0.2", + "@vitejs/plugin-react": "2.2.0" + }, + "scripts": { + "build": "vite build" + }, + "keywords": [], + "author": "", + "dependencies": { + "@chakra-ui/react": "2.3.6", + "@emotion/react": "11.10.5", + "@emotion/styled": "11.10.5", + "@heroicons/react": "2.0.12", + "@react-hook/window-size": "3.1.1", + "framer-motion": "7.6.2", + "qrcode": "1.5.1", + "react": "18.2.0", + "react-dom": "18.2.0", + "unplugin-auto-expose": "0.0.3" + } +} diff --git a/desktop/src/link/App.tsx b/desktop/packages/renderer/src/link/App.tsx similarity index 100% rename from desktop/src/link/App.tsx rename to desktop/packages/renderer/src/link/App.tsx diff --git a/desktop/src/link/Confirmation.tsx b/desktop/packages/renderer/src/link/Confirmation.tsx similarity index 100% rename from desktop/src/link/Confirmation.tsx rename to desktop/packages/renderer/src/link/Confirmation.tsx diff --git a/desktop/src/link/InviteLink/Clipboard.tsx b/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx similarity index 100% rename from desktop/src/link/InviteLink/Clipboard.tsx rename to desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx diff --git a/desktop/src/link/InviteLink/ClipboardIcon.tsx b/desktop/packages/renderer/src/link/InviteLink/ClipboardIcon.tsx similarity index 100% rename from desktop/src/link/InviteLink/ClipboardIcon.tsx rename to desktop/packages/renderer/src/link/InviteLink/ClipboardIcon.tsx diff --git a/desktop/src/link/InviteLink/index.tsx b/desktop/packages/renderer/src/link/InviteLink/index.tsx similarity index 100% rename from desktop/src/link/InviteLink/index.tsx rename to desktop/packages/renderer/src/link/InviteLink/index.tsx diff --git a/desktop/src/link/main.tsx b/desktop/packages/renderer/src/link/main.tsx similarity index 100% rename from desktop/src/link/main.tsx rename to desktop/packages/renderer/src/link/main.tsx diff --git a/desktop/src/link/theme.ts b/desktop/packages/renderer/src/link/theme.ts similarity index 100% rename from desktop/src/link/theme.ts rename to desktop/packages/renderer/src/link/theme.ts diff --git a/desktop/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx similarity index 100% rename from desktop/src/overlay/App.tsx rename to desktop/packages/renderer/src/overlay/App.tsx diff --git a/desktop/src/overlay/Pointer.tsx b/desktop/packages/renderer/src/overlay/Pointer.tsx similarity index 100% rename from desktop/src/overlay/Pointer.tsx rename to desktop/packages/renderer/src/overlay/Pointer.tsx diff --git a/desktop/src/overlay/main.tsx b/desktop/packages/renderer/src/overlay/main.tsx similarity index 100% rename from desktop/src/overlay/main.tsx rename to desktop/packages/renderer/src/overlay/main.tsx diff --git a/desktop/src/overlay/theme.ts b/desktop/packages/renderer/src/overlay/theme.ts similarity index 100% rename from desktop/src/overlay/theme.ts rename to desktop/packages/renderer/src/overlay/theme.ts diff --git a/desktop/src/overlay/types.ts b/desktop/packages/renderer/src/overlay/types.ts similarity index 100% rename from desktop/src/overlay/types.ts rename to desktop/packages/renderer/src/overlay/types.ts diff --git a/desktop/src/vite-env.d.ts b/desktop/packages/renderer/src/vite-env.d.ts similarity index 100% rename from desktop/src/vite-env.d.ts rename to desktop/packages/renderer/src/vite-env.d.ts diff --git a/desktop/packages/renderer/tsconfig.json b/desktop/packages/renderer/tsconfig.json new file mode 100644 index 00000000..d0ae472b --- /dev/null +++ b/desktop/packages/renderer/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "@tsconfig/strictest/tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["src/*"], + "#preload": ["../preload/src/index"] + }, + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowSyntheticDefaultImports": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src"], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/desktop/tsconfig.node.json b/desktop/packages/renderer/tsconfig.node.json similarity index 70% rename from desktop/tsconfig.node.json rename to desktop/packages/renderer/tsconfig.node.json index e979a775..45633ec5 100644 --- a/desktop/tsconfig.node.json +++ b/desktop/packages/renderer/tsconfig.node.json @@ -6,7 +6,8 @@ "composite": true, "module": "CommonJS", "moduleResolution": "node", - "types": ["node"] + "types": ["node"], + "resolveJsonModule": true }, - "include": ["package.json", "electron"] + "include": ["vite.config.ts"] } diff --git a/desktop/packages/renderer/vite.config.ts b/desktop/packages/renderer/vite.config.ts new file mode 100644 index 00000000..64e72221 --- /dev/null +++ b/desktop/packages/renderer/vite.config.ts @@ -0,0 +1,50 @@ +import react from "@vitejs/plugin-react"; +import { join } from "node:path"; +import { renderer } from "unplugin-auto-expose"; +import { defineConfig } from "vite"; + +import { chrome } from "../../.electron-vendors.cache.json"; + +const PACKAGE_ROOT = __dirname; + +export default defineConfig({ + mode: process.env["MODE"]!, + root: PACKAGE_ROOT, + resolve: { + alias: { + "/@/": join(PACKAGE_ROOT, "src") + "/", + }, + }, + base: "", + server: { + fs: { + strict: true, + }, + }, + build: { + sourcemap: true, + target: `chrome${chrome}`, + outDir: "dist", + assetsDir: ".", + rollupOptions: { + input: { + link: join(PACKAGE_ROOT, "link.html"), + overlay: join(PACKAGE_ROOT, "overlay.html"), + }, + }, + emptyOutDir: true, + reportCompressedSize: false, + }, + plugins: [ + react(), + renderer.vite({ + preloadEntry: join(PACKAGE_ROOT, "../preload/src/index.ts"), + }), + ], + esbuild: + process.env["MODE"] === "production" + ? { + drop: ["console", "debugger"], + } + : {}, +}); diff --git a/desktop/packages/tsconfig/node/tsconfig.json b/desktop/packages/tsconfig/node/tsconfig.json new file mode 100644 index 00000000..1da0e13d --- /dev/null +++ b/desktop/packages/tsconfig/node/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@tsconfig/node16-strictest-esm", + "compilerOptions": { + "resolveJsonModule": true, + "noEmit": true + } +} diff --git a/desktop/packages/tsconfig/package.json b/desktop/packages/tsconfig/package.json new file mode 100644 index 00000000..3fab9107 --- /dev/null +++ b/desktop/packages/tsconfig/package.json @@ -0,0 +1,13 @@ +{ + "name": "@smartpointer-desktop/tsconfig", + "version": "1.0.0", + "description": "", + "devDependencies": { + "@tsconfig/node16-strictest-esm": "1.0.3", + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0" + }, + "scripts": {}, + "keywords": [], + "author": "" +} diff --git a/desktop/scripts/generate-electron-vendors.mts b/desktop/scripts/generate-electron-vendors.mts new file mode 100644 index 00000000..148d9ad7 --- /dev/null +++ b/desktop/scripts/generate-electron-vendors.mts @@ -0,0 +1,19 @@ +/** + * This script should be run in electron context + */ + +import { writeFileSync } from "node:fs"; +import path from "node:path"; + +const electronRelease = process.versions; + +const node = electronRelease.node.split(".")[0]; +const chrome = electronRelease.v8.split(".").splice(0, 2).join(""); + +const browserslistrcPath = path.resolve(process.cwd(), ".browserslistrc"); + +writeFileSync( + "./.electron-vendors.cache.json", + JSON.stringify({ chrome, node }) +); +writeFileSync(browserslistrcPath, `Chrome ${chrome}`, "utf8"); diff --git a/desktop/scripts/watch.mts b/desktop/scripts/watch.mts new file mode 100644 index 00000000..cfbee5d8 --- /dev/null +++ b/desktop/scripts/watch.mts @@ -0,0 +1,105 @@ +#!/usr/bin/env node + +import electronPath from "electron"; +import { spawn, ChildProcess } from "node:child_process"; +import { build, createServer, LogLevel, ViteDevServer } from "vite"; + +const mode = (process.env["MODE"] = process.env["MODE"] || "development"); + +const logLevel: LogLevel = "warn"; + +/** + * Setup watcher for `main` package + * On file changed it totally re-launch electron app. + * Needs to set up `VITE_DEV_SERVER_URL` environment variable from {@link import('vite').ViteDevServer.resolvedUrls} + */ +function setupMainPackageWatcher(rendererWatchServer: ViteDevServer) { + const viteDevServerUrl = rendererWatchServer.resolvedUrls?.local[0]; + + if (viteDevServerUrl === undefined) { + throw new Error("Vite dev server url is undefined"); + } + + process.env["VITE_DEV_SERVER_URL"] = viteDevServerUrl; + + let electronApp: ChildProcess | null = null; + + return build({ + mode, + logLevel, + configFile: "packages/main/vite.config.ts", + build: { + /** + * Set to {} to enable rollup watcher + * @see https://vitejs.dev/config/build-options.html#build-watch + */ + watch: {}, + }, + plugins: [ + { + name: "reload-app-on-main-package-change", + writeBundle() { + /** Kill electron if process already exist */ + if (electronApp !== null) { + electronApp.removeListener("exit", process.exit); + electronApp.kill("SIGINT"); + electronApp = null; + } + + /** Spawn new electron process */ + electronApp = spawn(String(electronPath), ["."], { + stdio: "inherit", + }); + + /** Stops the watch script when the application has been quit */ + electronApp.addListener("exit", process.exit); + }, + }, + ], + }); +} + +/** + * Setup watcher for `preload` package + * On file changed it reload web page. + * Required to access the web socket of the page. By sending the `full-reload` command to the socket, it reloads the web page. + */ +function setupPreloadPackageWatcher(rendererWatchServer: ViteDevServer) { + return build({ + mode, + logLevel, + configFile: "packages/preload/vite.config.ts", + build: { + /** + * Set to {} to enable rollup watcher + * @see https://vitejs.dev/config/build-options.html#build-watch + */ + watch: {}, + }, + plugins: [ + { + name: "reload-page-on-preload-package-change", + writeBundle() { + rendererWatchServer.ws.send({ + type: "full-reload", + }); + }, + }, + ], + }); +} + +/** + * Dev server for Renderer package + * This must be the first, + * because the {@link setupMainPackageWatcher} and {@link setupPreloadPackageWatcher} + * depend on the dev server properties + */ +const rendererWatchServer = await createServer({ + mode, + logLevel, + configFile: "packages/renderer/vite.config.ts", +}).then((s) => s.listen()); + +await setupPreloadPackageWatcher(rendererWatchServer); +await setupMainPackageWatcher(rendererWatchServer); diff --git a/desktop/tsconfig.json b/desktop/tsconfig.json index 8191edd7..3aa80856 100644 --- a/desktop/tsconfig.json +++ b/desktop/tsconfig.json @@ -1,25 +1,5 @@ { - "extends": "@tsconfig/strictest/tsconfig.json", - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@/*": ["src/*"] - }, - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowSyntheticDefaultImports": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": ["src"], - "references": [ - { - "path": "./tsconfig.node.json" - } - ] + "extends": "@smartpointer-desktop/tsconfig/node", + "include": ["scripts/**/*"], + "exclude": ["packages/**/*"] } diff --git a/desktop/vite.config.ts b/desktop/vite.config.ts deleted file mode 100644 index a86acbb7..00000000 --- a/desktop/vite.config.ts +++ /dev/null @@ -1,46 +0,0 @@ -import react from "@vitejs/plugin-react"; -import { rmSync } from "fs"; -import path from "path"; -import { defineConfig, normalizePath } from "vite"; -import electron from "vite-electron-plugin"; -import renderer from "vite-plugin-electron-renderer"; - -rmSync(path.join(__dirname, "dist-electron"), { - recursive: true, - force: true, -}); - -export default defineConfig(({ mode }) => ({ - server: { - port: 7777, - }, - resolve: { - alias: { - "@": normalizePath(path.join(__dirname, "src")), - }, - }, - build: { - rollupOptions: { - input: { - link: normalizePath(path.join(__dirname, "link.html")), - // overlay: path.join(__dirname, "overlay.html"), - }, - }, - }, - plugins: [ - react(), - electron({ - include: ["electron", "preload"], - plugins: [], - }), - renderer({ - nodeIntegration: true, - }), - ], - esbuild: - mode === "production" - ? { - drop: ["console", "debugger"], - } - : {}, -})); diff --git a/desktop/yarn.lock b/desktop/yarn.lock deleted file mode 100644 index af3a2b8f..00000000 --- a/desktop/yarn.lock +++ /dev/null @@ -1,7127 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"7zip-bin@~5.1.1": - version "5.1.1" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" - integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== - -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.19.3": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.4.tgz#95c86de137bf0317f3a570e1b6e996b427299747" - integrity sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw== - -"@babel/core@^7.18.13": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.6.tgz#7122ae4f5c5a37c0946c066149abd8e75f81540f" - integrity sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.6" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helpers" "^7.19.4" - "@babel/parser" "^7.19.6" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.6" - "@babel/types" "^7.19.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/generator@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.6.tgz#9e481a3fe9ca6261c972645ae3904ec0f9b34a1d" - integrity sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA== - dependencies: - "@babel/types" "^7.19.4" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-compilation-targets@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz#a10a04588125675d7c7ae299af86fa1b2ee038ca" - integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg== - dependencies: - "@babel/compat-data" "^7.19.3" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz#6c52cc3ac63b70952d33ee987cbee1c9368b533f" - integrity sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.19.4" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.6" - "@babel/types" "^7.19.4" - -"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" - integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== - -"@babel/helper-simple-access@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" - integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== - dependencies: - "@babel/types" "^7.19.4" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helpers@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.4.tgz#42154945f87b8148df7203a25c31ba9a73be46c5" - integrity sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.4" - "@babel/types" "^7.19.4" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.18.10", "@babel/parser@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.6.tgz#b923430cb94f58a7eae8facbffa9efd19130e7f8" - integrity sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA== - -"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-development@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" - integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" - -"@babel/plugin-transform-react-jsx-self@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" - integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-source@^7.18.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" - integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-react-jsx@^7.18.10", "@babel/plugin-transform-react-jsx@^7.18.6": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" - integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.19.0" - -"@babel/runtime-corejs3@^7.10.2": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.6.tgz#778471a71d915cf3b955a9201bebabfe924f872a" - integrity sha512-oWNn1ZlGde7b4i/3tnixpH9qI0bOAACiUs+KEES4UUCnsPjVWFlWdLV/iwJuPC2qp3EowbAqsm+0XqNwnwYhxA== - dependencies: - core-js-pure "^3.25.1" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.7.2": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.4.tgz#a42f814502ee467d55b38dd1c256f53a7b885c78" - integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.19.4", "@babel/traverse@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.6.tgz#7b4c865611df6d99cb131eec2e8ac71656a490dc" - integrity sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.6" - "@babel/types" "^7.19.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.4.tgz#0dd5c91c573a202d600490a35b33246fed8a41c7" - integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@chakra-ui/accordion@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.1.2.tgz#f9d384b80f68a92689fa7ad4e43bd8944e6945c6" - integrity sha512-Jf7A6I0eIGk34zO5TiTW8orJOFQb5A/D1ekNYbaukNccoUPKJg/xdQ/b00oIR6LT93nJxggkoP/vszfmmTHuFg== - dependencies: - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/transition" "2.0.11" - -"@chakra-ui/alert@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.0.11.tgz#d792b0684ae7810befa3874af5bdd4aa115513a2" - integrity sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/spinner" "2.0.10" - -"@chakra-ui/anatomy@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz#33e60c7c4d6e5f949f6f8308249dc571f84ead1e" - integrity sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg== - -"@chakra-ui/avatar@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.2.0.tgz#58b5e650f7e4b3ab229f50e6a102c54b6eb4b23a" - integrity sha512-mpAkfr/JG+BNBw2WvU55CSRFYKeFBUyAQAu3YulznLzi2U3e7k3IA0J8ofbrDYlSH/9KqkDuuSrxqGZgct+Nug== - dependencies: - "@chakra-ui/image" "2.0.11" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/breadcrumb@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.1.0.tgz#530ded99f931cfcb9f4bd4d951bc82b0a4e102ac" - integrity sha512-khBR579SLDEo6Wuo3tETRY6m0yJD/WCvSR7Res2g1B6OJgc9OQGM7yIMu4OdLUTwfXsCnlHTDoSQPUxFOVAMIQ== - dependencies: - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/breakpoint-utils@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz#6231eff8b20f4e3cbb4eb7c86d05c927679d905b" - integrity sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg== - -"@chakra-ui/button@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.0.11.tgz#98e0aa1e35ea7e193bb50f9a4b5d0ea23202ace8" - integrity sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/spinner" "2.0.10" - -"@chakra-ui/checkbox@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.2.2.tgz#494d7090ac11a0a43d05b7849aff6085f7a91045" - integrity sha512-Y6Zbkkk5VNoe0RzqU6F+rKlFVPlubz1KIgYcb7CCNHGOM97dLtRm78eAvJ+7Xmpitr+7zZ4hJLLjfAz+e1X7rA== - dependencies: - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/visually-hidden" "2.0.11" - "@zag-js/focus-visible" "0.1.0" - -"@chakra-ui/clickable@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.0.10.tgz#e89b7b3eaf9364753f6205e36fd5128b26a617d8" - integrity sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw== - dependencies: - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/close-button@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.0.11.tgz#8b0679da42738229014d3807885d05fac0fdf448" - integrity sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw== - dependencies: - "@chakra-ui/icon" "3.0.11" - -"@chakra-ui/color-mode@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz#d3a6f9ba9eee15d9e14cc96484e25d44cef1dbc1" - integrity sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w== - dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/control-box@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.0.10.tgz#e8a849c9f0fa085da78ee15dda7e13e1734b983d" - integrity sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng== - -"@chakra-ui/counter@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.0.10.tgz#861f00db021235892dfe0407e739a259f1c233b2" - integrity sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw== - dependencies: - "@chakra-ui/number-utils" "2.0.4" - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/css-reset@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz#093ce6b166b37f2dd14e63f246635c463a59c106" - integrity sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg== - -"@chakra-ui/descendant@3.0.10": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.0.10.tgz#e54c95270896c451f61b57d31719ee042f4e1827" - integrity sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/dom-utils@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz#8a5498b107d3a42662f3502f7b8965cb73bf6a33" - integrity sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA== - -"@chakra-ui/editable@2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-2.0.13.tgz#4e6ff480956ae2dcacf4ba2a15019336486bd613" - integrity sha512-GM3n8t3/TOFFcDOWF/tuKsnqn66isZLsU+FkMRY2o0E8XjLBGjCKuXInPW5SRBqhje7EHC+kwViLE780PfwXbw== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/shared-utils" "2.0.2" - -"@chakra-ui/event-utils@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz#23de21e319d1a70863953402d64cb4b0e6ce322f" - integrity sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg== - -"@chakra-ui/focus-lock@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz#11c0301a326249efe269c2dd0f54b11a67a04321" - integrity sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA== - dependencies: - "@chakra-ui/dom-utils" "2.0.3" - react-focus-lock "^2.9.1" - -"@chakra-ui/form-control@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.0.11.tgz#fbfdddb02d1b5d2c67ffdc721c434ff16693e4bd" - integrity sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/hooks@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-2.1.0.tgz#a8df3692e407c2fed8cc551c8ce7f3fcd0ea9864" - integrity sha512-4H6BDITq/YrStW99LXurgPkcz4qHSVy9V/QWXCvt1pCuiDTqNztiW4r508H3ApAOsL9NEbyXcM/zWYD7r5VDjA== - dependencies: - "@chakra-ui/react-utils" "2.0.8" - "@chakra-ui/utils" "2.0.11" - compute-scroll-into-view "1.0.14" - copy-to-clipboard "3.3.1" - -"@chakra-ui/icon@3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.0.11.tgz#a51dda24bed2f2ed77b4136ada8f22d3249c9870" - integrity sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw== - dependencies: - "@chakra-ui/shared-utils" "2.0.2" - -"@chakra-ui/image@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.0.11.tgz#eb880ecd2fce47f22ef50bbbba66cbb027c0304c" - integrity sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA== - dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/input@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.0.12.tgz#332db53a831daea4d76e1de6d3b4462fd50ae167" - integrity sha512-lJ5necu+Wt698HdCTC7L/ErA2nNVJAra7+knPe0qMR+AizGEL7LKCV/bdQe7eggjvKsDGD4alJIEczUvm3JVUQ== - dependencies: - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/object-utils" "2.0.4" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/shared-utils" "2.0.2" - -"@chakra-ui/layout@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.1.9.tgz#3e9cc7b5915e033907367e40fc97d218efa5f777" - integrity sha512-ztsavtirtdtjxdqIkGR6fVcrffHp6hs1twRFO/dK14FGXrX3Nn9mi3J1fr1ITBHJq6y5B3yFEj0LHN2fO8dYyw== - dependencies: - "@chakra-ui/breakpoint-utils" "2.0.4" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/object-utils" "2.0.4" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/shared-utils" "2.0.2" - -"@chakra-ui/lazy-utils@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz#d85f9afc60c2434ba76376fd4b23a7a0a1341e14" - integrity sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w== - -"@chakra-ui/live-region@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.0.10.tgz#d33a784c85feed7ba96e2579553ca1d20c965171" - integrity sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg== - -"@chakra-ui/media-query@3.2.7": - version "3.2.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.2.7.tgz#ece5b2181136145305bf5e6ec82c696ef1d59a77" - integrity sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw== - dependencies: - "@chakra-ui/breakpoint-utils" "2.0.4" - "@chakra-ui/react-env" "2.0.10" - -"@chakra-ui/menu@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.1.2.tgz#bbe39e1efdb408ba8e6616e0ec290417474f9454" - integrity sha512-6Z7ecXjp6BtZ1ExbFggfxsAj1hwtcathXekmCTxHpXOD+BdjAC/13+oLclwXeuBO85aoTmQrQ2ovfTkO31bzRQ== - dependencies: - "@chakra-ui/clickable" "2.0.10" - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/lazy-utils" "2.0.2" - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-animation-state" "2.0.5" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-disclosure" "2.0.5" - "@chakra-ui/react-use-focus-effect" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-outside-click" "2.0.4" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/transition" "2.0.11" - -"@chakra-ui/modal@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.2.2.tgz#bf3ef2673a8641a5c851faceb7811e0c0f323517" - integrity sha512-cCYuqLZO4QqFUI1H+uEqixDk6UiCP3yC+sxkhFTXHIApSG9Z44v5np7BVTd6LKdmAN8pAWcc8Oxf14RvD6LWLw== - dependencies: - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/focus-lock" "2.0.12" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/transition" "2.0.11" - aria-hidden "^1.1.1" - react-remove-scroll "^2.5.4" - -"@chakra-ui/number-input@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.0.12.tgz#90a8408e6abb2d021793888ef2119d01761d7614" - integrity sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA== - dependencies: - "@chakra-ui/counter" "2.0.10" - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-event-listener" "2.0.4" - "@chakra-ui/react-use-interval" "2.0.2" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - -"@chakra-ui/number-utils@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz#0331be05956f2c03125c073d35655e261e267cd4" - integrity sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw== - -"@chakra-ui/object-utils@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz#d890ce285103a5e9b993f016a4fb38307aa55ac0" - integrity sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ== - -"@chakra-ui/pin-input@2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.0.15.tgz#08e65c5e8468cef6192634a53859169b51c2c4a7" - integrity sha512-Ha8siSZm9gyjHHBK8ejwhKT6+75U12I/hNiYFvl2JHhc+Uh8tdi7+N+9SILO5vqbIv9kb+WGitvZ67I0cHjSfw== - dependencies: - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/popover@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.1.1.tgz#1b5e05e334ba5f9bce4bc5bcabfb92563393fc84" - integrity sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA== - dependencies: - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/lazy-utils" "2.0.2" - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-animation-state" "2.0.5" - "@chakra-ui/react-use-disclosure" "2.0.5" - "@chakra-ui/react-use-focus-effect" "2.0.5" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/popper@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.0.8.tgz#89b6984aee405316974dbb70ba451f85832bf44e" - integrity sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA== - dependencies: - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@popperjs/core" "^2.9.3" - -"@chakra-ui/portal@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.0.10.tgz#8ac21131cb0666a0bf6565468b3f7e799ef3bc8d" - integrity sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/progress@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.0.12.tgz#7ce57fe2822d1741c26e82960ca02c667a265a05" - integrity sha512-9qtZimZosTliI7siAZkLeCVdCpXCTxmSETCudHcCUsC+FtcFacmA65+We8qij1nOIqmsbm+NYU6PP89TU2n4Hg== - dependencies: - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/provider@2.0.20": - version "2.0.20" - resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.0.20.tgz#2f3f73f6142f4d2b2a5a8ad6dbd777a3fc4390ce" - integrity sha512-mNNfsgm05G4x1VzvHVR9+PNEiuxNnn9xUKDuEwoaO7+IHCMzCRMtPbSJjwmv0xvHUGB9+JChjPpZI5RuHQziJQ== - dependencies: - "@chakra-ui/css-reset" "2.0.8" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-env" "2.0.10" - "@chakra-ui/system" "2.3.0" - "@chakra-ui/utils" "2.0.11" - -"@chakra-ui/radio@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.0.12.tgz#d89eb463df0247a0e634cff1fb9ca755bcbab825" - integrity sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA== - dependencies: - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@zag-js/focus-visible" "0.1.0" - -"@chakra-ui/react-children-utils@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.3.tgz#406b984c653befd6c99636fcefb55bd01d436a7d" - integrity sha512-tPQjLEEuAw/DYLRw0cNs/g8tcdhZ3r21Sr9dTAzoyvfk0vbZ24gCXRElltW2GZLiFA63mAidzhPmc+yQF3Wtgg== - -"@chakra-ui/react-context@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.0.4.tgz#1b6ab260d44d9073c95b975b7d1643f011e65e02" - integrity sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA== - -"@chakra-ui/react-env@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-2.0.10.tgz#2eaa4ba64a14ecd2d279c32d5edfef7a6b5de3e8" - integrity sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA== - -"@chakra-ui/react-types@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-types/-/react-types-2.0.3.tgz#dc454c4703b4de585e6461fd607304ede06fe595" - integrity sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw== - -"@chakra-ui/react-use-animation-state@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz#f022baf0103c35aa494227b041422e7d2401b0d4" - integrity sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A== - dependencies: - "@chakra-ui/dom-utils" "2.0.3" - "@chakra-ui/react-use-event-listener" "2.0.4" - -"@chakra-ui/react-use-callback-ref@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz#5099ef1df4413af42e434945f541de99394ec96f" - integrity sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg== - -"@chakra-ui/react-use-controllable-state@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz#5ef9f600ae134a2a37fe080fd6231bbed83544bb" - integrity sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-disclosure@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz#bb52340f0e7d614cc95819bd21cffd050783f96c" - integrity sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-event-listener@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz#3f893def57a7b10db6c355740dd1e82cd3216259" - integrity sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-focus-effect@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz#b554277c38e84468b019e08a73579e9700e1003a" - integrity sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg== - dependencies: - "@chakra-ui/dom-utils" "2.0.3" - "@chakra-ui/react-use-event-listener" "2.0.4" - "@chakra-ui/react-use-update-effect" "2.0.4" - -"@chakra-ui/react-use-focus-on-pointer-down@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz#8b605063c9e707a18b021fbcaed8919c8660d1ed" - integrity sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ== - dependencies: - "@chakra-ui/react-use-event-listener" "2.0.4" - -"@chakra-ui/react-use-interval@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz#6d1d5d5b5c5604ee2ea47f1e140e6eaf6e885df5" - integrity sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-latest-ref@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz#4895d3ae2dc93a660ed86aaec7021b729830d3d2" - integrity sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw== - -"@chakra-ui/react-use-merge-refs@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz#c23f10fda1d3a6327a48708a8a7ad4b62ba918d3" - integrity sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g== - -"@chakra-ui/react-use-outside-click@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz#977d873cfedec615c8e3acd48fca7b094b464b6e" - integrity sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-pan-event@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz#9269d4b798d1447e18b00ee0b28fa52c5c8efb26" - integrity sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA== - dependencies: - "@chakra-ui/event-utils" "2.0.5" - "@chakra-ui/react-use-latest-ref" "2.0.2" - framesync "5.3.0" - -"@chakra-ui/react-use-previous@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz#1091ae8abc2082ab504e3742f8b1d75409ae7b27" - integrity sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w== - -"@chakra-ui/react-use-safe-layout-effect@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz#31088eeb4b2a6910251683ddb15fb855d6127adf" - integrity sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ== - -"@chakra-ui/react-use-size@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz#3634782f8dab6aa2a37699188afa89251cbae8f3" - integrity sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew== - dependencies: - "@zag-js/element-size" "0.1.0" - -"@chakra-ui/react-use-timeout@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz#f1378de0d5e01f7aee60d5b9ec3205e1fc7d2fc4" - integrity sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-update-effect@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz#522bc58b943fffe540a91f7a096d42e4a91b9748" - integrity sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w== - -"@chakra-ui/react-utils@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz#1db4e920386f4afbf44fe9dd8aaaf6f22eefb371" - integrity sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ== - dependencies: - "@chakra-ui/utils" "2.0.11" - -"@chakra-ui/react@2.3.6": - version "2.3.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.3.6.tgz#a6d3e092cab433fcd9cf8e9876756818c4261df6" - integrity sha512-xo43UU+yMqRGHZLU4fSgzojeRl5stlIfT+GLbT9CUVEm0HMJCt2m8RsNPBvGOMzANdC+bzwSiOm+MNzQBi9IBQ== - dependencies: - "@chakra-ui/accordion" "2.1.2" - "@chakra-ui/alert" "2.0.11" - "@chakra-ui/avatar" "2.2.0" - "@chakra-ui/breadcrumb" "2.1.0" - "@chakra-ui/button" "2.0.11" - "@chakra-ui/checkbox" "2.2.2" - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/control-box" "2.0.10" - "@chakra-ui/counter" "2.0.10" - "@chakra-ui/css-reset" "2.0.8" - "@chakra-ui/editable" "2.0.13" - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/hooks" "2.1.0" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/image" "2.0.11" - "@chakra-ui/input" "2.0.12" - "@chakra-ui/layout" "2.1.9" - "@chakra-ui/live-region" "2.0.10" - "@chakra-ui/media-query" "3.2.7" - "@chakra-ui/menu" "2.1.2" - "@chakra-ui/modal" "2.2.2" - "@chakra-ui/number-input" "2.0.12" - "@chakra-ui/pin-input" "2.0.15" - "@chakra-ui/popover" "2.1.1" - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/progress" "2.0.12" - "@chakra-ui/provider" "2.0.20" - "@chakra-ui/radio" "2.0.12" - "@chakra-ui/react-env" "2.0.10" - "@chakra-ui/select" "2.0.12" - "@chakra-ui/skeleton" "2.0.17" - "@chakra-ui/slider" "2.0.12" - "@chakra-ui/spinner" "2.0.10" - "@chakra-ui/stat" "2.0.11" - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/switch" "2.0.14" - "@chakra-ui/system" "2.3.0" - "@chakra-ui/table" "2.0.11" - "@chakra-ui/tabs" "2.1.4" - "@chakra-ui/tag" "2.0.11" - "@chakra-ui/textarea" "2.0.12" - "@chakra-ui/theme" "2.1.14" - "@chakra-ui/theme-utils" "2.0.1" - "@chakra-ui/toast" "4.0.0" - "@chakra-ui/tooltip" "2.2.0" - "@chakra-ui/transition" "2.0.11" - "@chakra-ui/utils" "2.0.11" - "@chakra-ui/visually-hidden" "2.0.11" - -"@chakra-ui/select@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.0.12.tgz#9b485e6a28c9aa468bc1c0d8a78aabd985b0c370" - integrity sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA== - dependencies: - "@chakra-ui/form-control" "2.0.11" - -"@chakra-ui/shared-utils@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz#1df08133194c12ac4df9302604ec37784c2bb026" - integrity sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg== - -"@chakra-ui/skeleton@2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz#737e08f771980f5b73060dc6c940691e7759d044" - integrity sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg== - dependencies: - "@chakra-ui/media-query" "3.2.7" - "@chakra-ui/react-use-previous" "2.0.2" - -"@chakra-ui/slider@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.0.12.tgz#42fc5fe385c507276da29f4aa49a6408ee853978" - integrity sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw== - dependencies: - "@chakra-ui/number-utils" "2.0.4" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-latest-ref" "2.0.2" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-pan-event" "2.0.5" - "@chakra-ui/react-use-size" "2.0.4" - "@chakra-ui/react-use-update-effect" "2.0.4" - -"@chakra-ui/spinner@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.0.10.tgz#f8b1b6f1c8f45e3aeab44d5ab1f1debc71e52573" - integrity sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw== - -"@chakra-ui/stat@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.0.11.tgz#0c052aee68486a892e09e802bb569dc984e31eae" - integrity sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/styled-system@2.3.4": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz#6022c5a675b54a69b1d3c2d3e60258901dc7b82a" - integrity sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w== - dependencies: - csstype "^3.0.11" - lodash.mergewith "4.6.2" - -"@chakra-ui/switch@2.0.14": - version "2.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.0.14.tgz#62372355bf73c19896b39fb7e75c132333c5a882" - integrity sha512-6lzhCkJq7vbD3yGaorGLp0ZZU4ewdKwAu0e62qR8TfYZwbcbpkXbBKloIHbA2XKOduISzS2WYqjmoP6jSKIxrA== - dependencies: - "@chakra-ui/checkbox" "2.2.2" - -"@chakra-ui/system@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.3.0.tgz#b7ba122872d4d48806fbf994f1187680ae2296a6" - integrity sha512-BxikahglBI0uU8FE3anEorDTU5oKTUuBIEKVcQrEVnrbNuRJEy1OVYyCNXfqW3MpruRO9ypYV2bWt02AZZWEaQ== - dependencies: - "@chakra-ui/color-mode" "2.1.9" - "@chakra-ui/react-utils" "2.0.8" - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/theme-utils" "2.0.1" - "@chakra-ui/utils" "2.0.11" - react-fast-compare "3.2.0" - -"@chakra-ui/table@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.0.11.tgz#9bd25d5383c94982b89e792675bc1d1f667f81f3" - integrity sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg== - dependencies: - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/tabs@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-2.1.4.tgz#38d9748ce2cfa583a123c0f695ea1cbce1a6bd42" - integrity sha512-/CQGj1lC9lvruT5BCYZH6Ok64W4CDSysDXuR2XPZXIih9kVOdXQEMXxG8+3vc63WqTBjHuURtZI0g8ouOy84ew== - dependencies: - "@chakra-ui/clickable" "2.0.10" - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/lazy-utils" "2.0.2" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/tag@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-2.0.11.tgz#14702adf5d1456dbbb84ea7a4b314953b92c323f" - integrity sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/textarea@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.0.12.tgz#469c1d64cb855b3b534dcd7fcc1d927e60da8da1" - integrity sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A== - dependencies: - "@chakra-ui/form-control" "2.0.11" - -"@chakra-ui/theme-tools@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz#b29d9fb626d35e3b00f532c64f95ea261d8f6997" - integrity sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g== - dependencies: - "@chakra-ui/anatomy" "2.0.7" - "@ctrl/tinycolor" "^3.4.0" - -"@chakra-ui/theme-utils@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.1.tgz#a3dc99331ba943e155dd683fe25ce302e3084db0" - integrity sha512-NDwzgTPxm+v3PAJlSSU1MORHLMqO9vsRJ+ObELD5wpvE9aEyRziN/AZSoK2oLwCQMPEiU7R99K5ij1E6ptMt7w== - dependencies: - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/theme" "2.1.14" - lodash.mergewith "4.6.2" - -"@chakra-ui/theme@2.1.14": - version "2.1.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-2.1.14.tgz#4726d65a65515f8ee96b5f2a725d0d17804ddfc9" - integrity sha512-6EYJCQlrjSjNAJvZmw1un50F8+sQDFsdwu/7UzWe+TeANpKlz4ZcHbh0gkl3PD62lGis+ehITUwqRm8htvDOjw== - dependencies: - "@chakra-ui/anatomy" "2.0.7" - "@chakra-ui/theme-tools" "2.0.12" - -"@chakra-ui/toast@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-4.0.0.tgz#797c34c4ecfcad7c6899c1cda221af0ff04d5d0b" - integrity sha512-abeeloJac5T9WK2IN76fEM5FSRH+erNXln2HqDf5wLBn33avSBXWyTiUL8riVSUqto0lrIn6FuK/MmKo0DH4og== - dependencies: - "@chakra-ui/alert" "2.0.11" - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-use-timeout" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/theme" "2.1.14" - -"@chakra-ui/tooltip@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz#24e005f831cddf1c0e41dd246ed2771a97b8637c" - integrity sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ== - dependencies: - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-disclosure" "2.0.5" - "@chakra-ui/react-use-event-listener" "2.0.4" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/transition@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.0.11.tgz#b2cfeb2150871c635cb9d03d9b525481dbe56f56" - integrity sha512-O0grc162LARPurjz1R+J+zr4AAKsVwN5+gaqLfZLMWg6TpvczJhwEA2fLCNAdkC/gomere390bJsy52xfUacUw== - -"@chakra-ui/utils@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-2.0.11.tgz#8e773f900a8356bd10c48b59151a781dba1c7b70" - integrity sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA== - dependencies: - "@types/lodash.mergewith" "4.6.6" - css-box-model "1.2.1" - framesync "5.3.0" - lodash.mergewith "4.6.2" - -"@chakra-ui/visually-hidden@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz#b2eb236e803451b39cdfcce3c5ab52e773c066a3" - integrity sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ== - -"@ctrl/tinycolor@^3.4.0": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32" - integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== - -"@develar/schema-utils@~2.6.5": - version "2.6.5" - resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" - integrity sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig== - dependencies: - ajv "^6.12.0" - ajv-keywords "^3.4.1" - -"@electron/get@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" - integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== - dependencies: - debug "^4.1.1" - env-paths "^2.2.0" - fs-extra "^8.1.0" - got "^9.6.0" - progress "^2.0.3" - semver "^6.2.0" - sumchecker "^3.0.1" - optionalDependencies: - global-agent "^3.0.0" - global-tunnel-ng "^2.7.1" - -"@electron/universal@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.2.1.tgz#3c2c4ff37063a4e9ab1e6ff57db0bc619bc82339" - integrity sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ== - dependencies: - "@malept/cross-spawn-promise" "^1.1.0" - asar "^3.1.0" - debug "^4.3.1" - dir-compare "^2.4.0" - fs-extra "^9.0.1" - minimatch "^3.0.4" - plist "^3.0.4" - -"@emotion/babel-plugin@^11.10.0": - version "11.10.2" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz#879db80ba622b3f6076917a1e6f648b1c7d008c7" - integrity sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/plugin-syntax-jsx" "^7.17.12" - "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.0" - "@emotion/memoize" "^0.8.0" - "@emotion/serialize" "^1.1.0" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.0.13" - -"@emotion/cache@^11.10.0": - version "11.10.3" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.3.tgz#c4f67904fad10c945fea5165c3a5a0583c164b87" - integrity sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ== - dependencies: - "@emotion/memoize" "^0.8.0" - "@emotion/sheet" "^1.2.0" - "@emotion/utils" "^1.2.0" - "@emotion/weak-memoize" "^0.3.0" - stylis "4.0.13" - -"@emotion/hash@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" - integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== - -"@emotion/is-prop-valid@^0.8.2": - version "0.8.8" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - dependencies: - "@emotion/memoize" "0.7.4" - -"@emotion/is-prop-valid@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" - integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== - dependencies: - "@emotion/memoize" "^0.8.0" - -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - -"@emotion/memoize@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" - integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== - -"@emotion/react@11.10.4": - version "11.10.4" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.4.tgz#9dc6bccbda5d70ff68fdb204746c0e8b13a79199" - integrity sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.0" - "@emotion/cache" "^11.10.0" - "@emotion/serialize" "^1.1.0" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@emotion/utils" "^1.2.0" - "@emotion/weak-memoize" "^0.3.0" - hoist-non-react-statics "^3.3.1" - -"@emotion/serialize@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.0.tgz#b1f97b1011b09346a40e9796c37a3397b4ea8ea8" - integrity sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA== - dependencies: - "@emotion/hash" "^0.9.0" - "@emotion/memoize" "^0.8.0" - "@emotion/unitless" "^0.8.0" - "@emotion/utils" "^1.2.0" - csstype "^3.0.2" - -"@emotion/sheet@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.0.tgz#771b1987855839e214fc1741bde43089397f7be5" - integrity sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w== - -"@emotion/styled@11.10.4": - version "11.10.4" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.4.tgz#e93f84a4d54003c2acbde178c3f97b421fce1cd4" - integrity sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.0" - "@emotion/is-prop-valid" "^1.2.0" - "@emotion/serialize" "^1.1.0" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@emotion/utils" "^1.2.0" - -"@emotion/unitless@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" - integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== - -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" - integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== - -"@emotion/utils@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" - integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== - -"@emotion/weak-memoize@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" - integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== - -"@esbuild/android-arm@0.15.12": - version "0.15.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.12.tgz#e548b10a5e55b9e10537a049ebf0bc72c453b769" - integrity sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA== - -"@esbuild/linux-loong64@0.15.12": - version "0.15.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz#475b33a2631a3d8ca8aa95ee127f9a61d95bf9c1" - integrity sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw== - -"@eslint/eslintrc@^1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" - integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.4.0" - globals "^13.15.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@heroicons/react@^2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.12.tgz#7e5a16c82512f89a30266dd36f8b8465b3e3e216" - integrity sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg== - -"@humanwhocodes/config-array@^0.10.5": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc" - integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@jimp/bmp@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.16.2.tgz#3982879b10626fc8cf1b4ab8627158bad142ec9d" - integrity sha512-4g9vW45QfMoGhLVvaFj26h4e7cC+McHUQwyFQmNTLW4FfC1OonN9oUr2m/FEDGkTYKR7aqdXR5XUqqIkHWLaFw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - bmp-js "^0.1.0" - -"@jimp/core@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.16.2.tgz#4f8e83a4af76a60610e794362d1deb5afaa03353" - integrity sha512-dp7HcyUMzjXphXYodI6PaXue+I9PXAavbb+AN+1XqFbotN22Z12DosNPEyy+UhLY/hZiQQqUkEaJHkvV31rs+w== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - any-base "^1.1.0" - buffer "^5.2.0" - exif-parser "^0.1.12" - file-type "^9.0.0" - load-bmfont "^1.3.1" - mkdirp "^0.5.1" - phin "^2.9.1" - pixelmatch "^4.0.2" - tinycolor2 "^1.4.1" - -"@jimp/custom@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.16.2.tgz#e1ba6874551dd4d748825680c3a16bb7cd3595b6" - integrity sha512-GtNwOs4hcVS2GIbqRUf42rUuX07oLB92cj7cqxZb0ZGWwcwhnmSW0TFLAkNafXmqn9ug4VTpNvcJSUdiuECVKg== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/core" "^0.16.2" - -"@jimp/gif@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.16.2.tgz#c049cf0fc781233aca418f130f8664c4cbab64c1" - integrity sha512-TMdyT9Q0paIKNtT7c5KzQD29CNCsI/t8ka28jMrBjEK7j5RRTvBfuoOnHv7pDJRCjCIqeUoaUSJ7QcciKic6CA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - gifwrap "^0.9.2" - omggif "^1.0.9" - -"@jimp/jpeg@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.16.2.tgz#1060cff9700d08802a0932a397cfb61a34b1d058" - integrity sha512-BW5gZydgq6wdIwHd+3iUNgrTklvoQc/FUKSj9meM6A0FU21lUaansRX5BDdJqHkyXJLnnlDGwDt27J+hQuBAVw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - jpeg-js "^0.4.2" - -"@jimp/plugin-blit@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.16.2.tgz#65e683f3f2860a59999b6af068efde3625f86cf7" - integrity sha512-Z31rRfV80gC/r+B/bOPSVVpJEWXUV248j7MdnMOFLu4vr8DMqXVo9jYqvwU/s4LSTMAMXqm4Jg6E/jQfadPKAg== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-blur@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.16.2.tgz#05533c19973a16feb037d175bb77e4532f144e45" - integrity sha512-ShkJCAzRI+1fAKPuLLgEkixpSpVmKTYaKEFROUcgmrv9AansDXGNCupchqVMTdxf8zPyW8rR1ilvG3OJobufLQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-circle@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-circle/-/plugin-circle-0.16.2.tgz#f66c7b8562ccced02688612f548b76952b14ab70" - integrity sha512-6T4z/48F4Z5+YwAVCLOvXQcyGmo0E3WztxCz6XGQf66r4JJK78+zcCDYZFLMx0BGM0091FogNK4QniP8JaOkrA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-color@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.16.2.tgz#925d3b2fa41807c7119197bdf9c5694d92efe3be" - integrity sha512-6oBV0g0J17/7E+aTquvUsgSc85nUbUi+64tIK5eFIDzvjhlqhjGNJYlc46KJMCWIs61qRJayQoZdL/iT/iQuGQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - tinycolor2 "^1.4.1" - -"@jimp/plugin-contain@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.16.2.tgz#e5cf5ca7cc3eec1306cb1b92dbd2a1fad6146a94" - integrity sha512-pLcxO3hVN3LCEhMNvpZ9B7xILHVlS433Vv16zFFJxLRqZdYvPLsc+ZzJhjAiHHuEjVblQrktHE3LGeQwGJPo0w== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-cover@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.16.2.tgz#c4aadfaad718a14838219889936ad39a18021df4" - integrity sha512-gzWM7VvYeI8msyiwbUZxH+sGQEgO6Vd6adGxZ0CeKX00uQOe5lDzxb1Wjx7sHcJGz8a/5fmAuwz7rdDtpDUbkw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-crop@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.16.2.tgz#2dd716b93a865b839143016acac53681d85362c3" - integrity sha512-qCd3hfMEE+Z2EuuyXewgXRTtKJGIerWzc1zLEJztsUkPz5i73IGgkOL+mrNutZwGaXZbm+8SwUaGb46sxAO6Tw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-displace@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.16.2.tgz#e4852c48f4b2095a4bcc61c8c1a5faa9618773ef" - integrity sha512-6nXdvNNjCdD95v2o3/jPeur903dz08lG4Y8gmr5oL2yVv9LSSbMonoXYrR/ASesdyXqGdXJLU4NL+yZs4zUqbQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-dither@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.16.2.tgz#e5cf77f5b0b8a4247c171b7e234c99031b6a59f3" - integrity sha512-DERpIzy21ZanMkVsD0Tdy8HQLbD1E41OuvIzaMRoW4183PA6AgGNlrQoFTyXmzjy6FTy1SxaQgTEdouInAWZ9Q== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-fisheye@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.2.tgz#ec6cab102959fd67a4061e6812db6135731f7731" - integrity sha512-Df7PsGIwiIpQu3EygYCnaJyTfOwvwtYV3cmYJS7yFLtdiFUuod+hlSo5GkwEPLAy+QBxhUbDuUqnsWo4NQtbiQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-flip@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.16.2.tgz#3d6f5eac4a8d7d62251aba55259ecb4f8dfe42cf" - integrity sha512-+2uC8ioVQUr06mnjSWraskz2L33nJHze35LkQ8ZNsIpoZLkgvfiWatqAs5bj+1jGI/9kxoCFAaT1Is0f+a4/rw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-gaussian@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.2.tgz#6546886e8b0acfebf285c5aabc4fea476dc54159" - integrity sha512-2mnuDSg4ZEH8zcJig7DZZf4st/cYmQ5UYJKP76iGhZ+6JDACk6uejwAgT5xHecNhkVAaXMdCybA2eknH/9OE1w== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-invert@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.16.2.tgz#6ca4f7b204c5d674d093d9aa4c32bf20a924a0ee" - integrity sha512-xFvHbVepTY/nus+6yXiYN1iq+UBRkT0MdnObbiQPstUrAsz0Imn6MWISsnAyMvcNxHGrxaxjuU777JT/esM0gg== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-mask@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.16.2.tgz#b352392bc8773f6b21b34901ed17f2bb90a8047e" - integrity sha512-AbdO85xxhfgEDdxYKpUotEI9ixiCMaIpfYHD5a5O/VWeimz2kuwhcrzlHGiyq1kKAgRcl0WEneTCZAHVSyvPKA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-normalize@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.16.2.tgz#e36a8ecaea6acb4711c543212863a570fe19901f" - integrity sha512-+ItBWFwmB0Od7OfOtTYT1gm543PpHUgU8/DN55z83l1JqS0OomDJAe7BmCppo2405TN6YtVm/csXo7p4iWd/SQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-print@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.16.2.tgz#8873338941498997cb2a0d2820e9d58d7c03ba61" - integrity sha512-ifTGEeJ5UZTCiqC70HMeU3iXk/vsOmhWiwVGOXSFXhFeE8ZpDWvlmBsrMYnRrJGuaaogHOIrrQPI+kCdDBSBIQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - load-bmfont "^1.4.0" - -"@jimp/plugin-resize@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.16.2.tgz#7bcca41d9959667fb1e6e87bd6073ce0dbc43bc4" - integrity sha512-gE4N9l6xuwzacFZ2EPCGZCJ/xR+aX2V7GdMndIl/6kYIw5/eib1SFuF9AZLvIPSFuE1FnGo8+vT0pr++SSbhYg== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-rotate@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.16.2.tgz#deba6956eaf1d127e91389c53d5c6f59ef80d17f" - integrity sha512-/CTEYkR1HrgmnE0VqPhhbBARbDAfFX590LWGIpxcYIYsUUGQCadl+8Qo4UX13FH0Nt8UHEtPA+O2x08uPYg9UA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-scale@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.16.2.tgz#d297e6a83f860b5e29bc5bd30ec1556561cb71ab" - integrity sha512-3inuxfrlquyLaqFdiiiQNJUurR0WbvN5wAf1qcYX2LubG1AG8grayYD6H7XVoxfUGTZXh1kpmeirEYlqA2zxcw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-shadow@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-shadow/-/plugin-shadow-0.16.2.tgz#2365b0d4ade0f9641cf48b887431fe478a7ace45" - integrity sha512-Q0aIs2/L6fWMcEh9Ms73u34bT1hyUMw/oxaVoIzOLo6/E8YzCs2Bi63H0/qaPS0MQpEppI++kvosPbblABY79w== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugin-threshold@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugin-threshold/-/plugin-threshold-0.16.2.tgz#3b851659ab1db195b2b4e6c9901f19996a086568" - integrity sha512-gyOwmBgjtMPvcuyOhkP6dOGWbQdaTfhcBRN22mYeI/k/Wh/Zh1OI21F6eKLApsVRmg15MoFnkrCz64RROC34sw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - -"@jimp/plugins@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.16.2.tgz#bba2a7247f926fe7e13e35b24ca9552b0aae4312" - integrity sha512-zCvYtCgctmC0tkYEu+y+kSwSIZBsNznqJ3/3vkpzxdyjd6wCfNY5Qc/68MPrLc1lmdeGo4cOOTYHG7Vc6myzRw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/plugin-blit" "^0.16.2" - "@jimp/plugin-blur" "^0.16.2" - "@jimp/plugin-circle" "^0.16.2" - "@jimp/plugin-color" "^0.16.2" - "@jimp/plugin-contain" "^0.16.2" - "@jimp/plugin-cover" "^0.16.2" - "@jimp/plugin-crop" "^0.16.2" - "@jimp/plugin-displace" "^0.16.2" - "@jimp/plugin-dither" "^0.16.2" - "@jimp/plugin-fisheye" "^0.16.2" - "@jimp/plugin-flip" "^0.16.2" - "@jimp/plugin-gaussian" "^0.16.2" - "@jimp/plugin-invert" "^0.16.2" - "@jimp/plugin-mask" "^0.16.2" - "@jimp/plugin-normalize" "^0.16.2" - "@jimp/plugin-print" "^0.16.2" - "@jimp/plugin-resize" "^0.16.2" - "@jimp/plugin-rotate" "^0.16.2" - "@jimp/plugin-scale" "^0.16.2" - "@jimp/plugin-shadow" "^0.16.2" - "@jimp/plugin-threshold" "^0.16.2" - timm "^1.6.1" - -"@jimp/png@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.16.2.tgz#45af82656aad2fde0489687a538f2af903867a1b" - integrity sha512-sFOtOSz/tzDwXEChFQ/Nxe+0+vG3Tj0eUxnZVDUG/StXE9dI8Bqmwj3MIa0EgK5s+QG3YlnDOmlPUa4JqmeYeQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.16.2" - pngjs "^3.3.3" - -"@jimp/tiff@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.16.2.tgz#613870065fe1387f6a09fe9d8230c00c35b7b640" - integrity sha512-ADcdqmtZF+U2YoaaHTzFX8D6NFpmN4WZUT0BPMerEuY7Cq8QoLYU22z2h034FrVW+Rbi1b3y04sB9iDiQAlf2w== - dependencies: - "@babel/runtime" "^7.7.2" - utif "^2.0.1" - -"@jimp/types@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.16.2.tgz#e245281495d0c92cd73174f7ac359211882288c7" - integrity sha512-0Ue5Sq0XnDF6TirisWv5E+8uOnRcd8vRLuwocJOhF76NIlcQrz+5r2k2XWKcr3d+11n28dHLXW5TKSqrUopxhA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/bmp" "^0.16.2" - "@jimp/gif" "^0.16.2" - "@jimp/jpeg" "^0.16.2" - "@jimp/png" "^0.16.2" - "@jimp/tiff" "^0.16.2" - timm "^1.6.1" - -"@jimp/utils@^0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.16.2.tgz#e78cb82c46f608b72179a31581065bf75b35166c" - integrity sha512-XENrPvmigiXZQ8E2nxJqO6UVvWBLzbNwyYi3Y8Q1IECoYhYI3kgOQ0fmy4G269Vz1V0omh1bNmC42r4OfXg1Jg== - dependencies: - "@babel/runtime" "^7.7.2" - regenerator-runtime "^0.13.3" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@malept/cross-spawn-promise@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" - integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== - dependencies: - cross-spawn "^7.0.1" - -"@malept/flatpak-bundler@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" - integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== - dependencies: - debug "^4.1.1" - fs-extra "^9.0.0" - lodash "^4.17.15" - tmp-promise "^3.0.2" - -"@motionone/animation@^10.13.1": - version "10.14.0" - resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.14.0.tgz#2f2a3517183bb58d82e389aac777fe0850079de6" - integrity sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ== - dependencies: - "@motionone/easing" "^10.14.0" - "@motionone/types" "^10.14.0" - "@motionone/utils" "^10.14.0" - tslib "^2.3.1" - -"@motionone/dom@10.13.1": - version "10.13.1" - resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.13.1.tgz#fc29ea5d12538f21b211b3168e502cfc07a24882" - integrity sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ== - dependencies: - "@motionone/animation" "^10.13.1" - "@motionone/generators" "^10.13.1" - "@motionone/types" "^10.13.0" - "@motionone/utils" "^10.13.1" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@motionone/easing@^10.14.0": - version "10.14.0" - resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.14.0.tgz#d8154b7f71491414f3cdee23bd3838d763fffd00" - integrity sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA== - dependencies: - "@motionone/utils" "^10.14.0" - tslib "^2.3.1" - -"@motionone/generators@^10.13.1": - version "10.14.0" - resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.14.0.tgz#e05d9dd56da78a4b92db99185848a0f3db62242d" - integrity sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg== - dependencies: - "@motionone/types" "^10.14.0" - "@motionone/utils" "^10.14.0" - tslib "^2.3.1" - -"@motionone/types@^10.13.0", "@motionone/types@^10.14.0": - version "10.14.0" - resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.14.0.tgz#148c34f3270b175397e49c3058b33fab405c21e3" - integrity sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ== - -"@motionone/utils@^10.13.1", "@motionone/utils@^10.14.0": - version "10.14.0" - resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.14.0.tgz#a19a3464ed35b08506747b062d035c7bc9bbe708" - integrity sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw== - dependencies: - "@motionone/types" "^10.14.0" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@nestjs/common@8.4.4": - version "8.4.4" - resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-8.4.4.tgz#0914c6c0540b5a344c7c8fd6072faa1a49af1158" - integrity sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q== - dependencies: - axios "0.26.1" - iterare "1.2.1" - tslib "2.3.1" - uuid "8.3.2" - -"@nestjs/core@8.4.4": - version "8.4.4" - resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-8.4.4.tgz#94fd2d63fd77791f616fbecafb79faa2235eeeff" - integrity sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg== - dependencies: - "@nuxtjs/opencollective" "0.3.2" - fast-safe-stringify "2.1.1" - iterare "1.2.1" - object-hash "3.0.0" - path-to-regexp "3.2.0" - tslib "2.3.1" - uuid "8.3.2" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nut-tree/libnut-darwin@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@nut-tree/libnut-darwin/-/libnut-darwin-2.3.0.tgz#93eec6d6f6c3744506fff035864c0054f4c25b2f" - integrity sha512-hbNW0WN5Olrrcl59sNXCdJCHmaclwk5G/FMQcP8NoTNWkSv2L+zxXZ5dNt13DErCv9HCvMrof20nBz82LArNXg== - dependencies: - bindings "1.5.0" - cmake-js "6.1.0" - node-addon-api "3.0.0" - -"@nut-tree/libnut-linux@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@nut-tree/libnut-linux/-/libnut-linux-2.3.0.tgz#ea9fc5de54744c549941c4574c50fa15fe4a888b" - integrity sha512-Hc2GsW4/BNYViqqaaaQCytj2C4NWNCJGGhCbznjyqI2cAHU3y5Hx+Frlkcnohfo+ofyOZOlPDQSxtP+E4tmVOw== - dependencies: - bindings "1.5.0" - cmake-js "6.1.0" - node-addon-api "3.0.0" - -"@nut-tree/libnut-win32@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@nut-tree/libnut-win32/-/libnut-win32-2.3.0.tgz#206d8524ca2ba126f946eb98821398d7812459eb" - integrity sha512-2v9fBVekJn9ktyI2IWmYlLzNqGBdkaSscfqKmT7Kdzshh6nbsqeawRmhFc4IgTOJBSruz7oc6AWAWsRk9OL3FQ== - dependencies: - bindings "1.5.0" - cmake-js "6.1.0" - node-addon-api "3.0.0" - -"@nut-tree/libnut@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@nut-tree/libnut/-/libnut-2.3.0.tgz#1f0482a7b69b897eff43e5b868fb312e55b2e6c5" - integrity sha512-EAbwcA3xv4zZWX8EmcKzWlWON1hf/IxJsMAdApRqObhoarpBQO28DoHAxZW7HQPP/T9S1YrLHONjGxwUzippQQ== - dependencies: - "@nut-tree/libnut-darwin" "2.3.0" - "@nut-tree/libnut-linux" "2.3.0" - "@nut-tree/libnut-win32" "2.3.0" - -"@nut-tree/nut-js@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@nut-tree/nut-js/-/nut-js-2.3.0.tgz#5f414dd7e46b25a5fca194dd389bcd6c8021afe6" - integrity sha512-QOQeuwlB1e+Ctj7h0lcIzxeWs1tR8DACxCURDsS/TxsYP0SqNBsc+ov4GjwJGOI80WOe00gXahnqVPie4qjfSg== - dependencies: - "@nut-tree/libnut" "2.3.0" - clipboardy "2.3.0" - jimp "0.16.2" - node-abort-controller "2.0.0" - -"@nuxtjs/opencollective@0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz#620ce1044f7ac77185e825e1936115bb38e2681c" - integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== - dependencies: - chalk "^4.1.0" - consola "^2.15.0" - node-fetch "^2.6.1" - -"@openapitools/openapi-generator-cli@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz#727a0f29fec1f91ffb467003d0d12ef35554e0ef" - integrity sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw== - dependencies: - "@nestjs/common" "8.4.4" - "@nestjs/core" "8.4.4" - "@nuxtjs/opencollective" "0.3.2" - chalk "4.1.2" - commander "8.3.0" - compare-versions "4.1.3" - concurrently "6.5.1" - console.table "0.10.0" - fs-extra "10.0.1" - glob "7.1.6" - inquirer "8.2.2" - lodash "4.17.21" - reflect-metadata "0.1.13" - rxjs "7.5.5" - tslib "2.0.3" - -"@pkgr/utils@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" - integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw== - dependencies: - cross-spawn "^7.0.3" - is-glob "^4.0.3" - open "^8.4.0" - picocolors "^1.0.0" - tiny-glob "^0.2.9" - tslib "^2.4.0" - -"@popperjs/core@^2.9.3": - version "2.11.6" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" - integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== - -"@react-hook/debounce@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@react-hook/debounce/-/debounce-3.0.0.tgz#9eea8b5d81d4cb67cd72dd8657b3ff724afc7cad" - integrity sha512-ir/kPrSfAzY12Gre0sOHkZ2rkEmM4fS5M5zFxCi4BnCeXh2nvx9Ujd+U4IGpKCuPA+EQD0pg1eK2NGLvfWejag== - dependencies: - "@react-hook/latest" "^1.0.2" - -"@react-hook/event@^1.2.1": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@react-hook/event/-/event-1.2.6.tgz#52f91578add934acc1203328ca09ab14fc7ee58e" - integrity sha512-JUL5IluaOdn5w5Afpe/puPa1rj8X6udMlQ9dt4hvMuKmTrBS1Ya6sb4sVgvfe2eU4yDuOfAhik8xhbcCekbg9Q== - -"@react-hook/latest@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@react-hook/latest/-/latest-1.0.3.tgz#c2d1d0b0af8b69ec6e2b3a2412ba0768ac82db80" - integrity sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg== - -"@react-hook/throttle@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@react-hook/throttle/-/throttle-2.2.0.tgz#d0402714a06e1ba0bc1da1fdf5c3c5cd0e08d45a" - integrity sha512-LJ5eg+yMV8lXtqK3lR+OtOZ2WH/EfWvuiEEu0M3bhR7dZRfTyEJKxH1oK9uyBxiXPtWXiQggWbZirMCXam51tg== - dependencies: - "@react-hook/latest" "^1.0.2" - -"@react-hook/window-size@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@react-hook/window-size/-/window-size-3.1.1.tgz#1a564902cfe212e8c27ffc2e74adcaa18a7d65b3" - integrity sha512-yWnVS5LKnOUIrEsI44oz3bIIUYqflamPL27n+k/PC//PsX/YeWBky09oPeAoc9As6jSH16Wgo8plI+ECZaHk3g== - dependencies: - "@react-hook/debounce" "^3.0.0" - "@react-hook/event" "^1.2.1" - "@react-hook/throttle" "^2.2.0" - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@stomp/stompjs@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@stomp/stompjs/-/stompjs-6.1.2.tgz#4ac3c380e8d1de1da94a3623d404e67de69dd01e" - integrity sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ== - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@tsconfig/strictest@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/strictest/-/strictest-1.0.2.tgz#aff98cd714dbd1722c9229eed2dcf3fc6fd30fd9" - integrity sha512-IRKlC8cnP7zMz1SDBjyIVyPapkEGWLZ6wkF6Z8T+xU80P9sO5uGXlIUvtzjx+7ehPJRWxkB6CeIDwUfyqNtYkQ== - -"@types/debug@^4.1.6": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" - integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== - dependencies: - "@types/ms" "*" - -"@types/fs-extra@^9.0.11": - version "9.0.13" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" - integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== - dependencies: - "@types/node" "*" - -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/lodash.mergewith@4.6.6": - version "4.6.6" - resolved "https://registry.yarnpkg.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz#c4698f5b214a433ff35cb2c75ee6ec7f99d79f10" - integrity sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*": - version "4.14.186" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.186.tgz#862e5514dd7bd66ada6c70ee5fce844b06c8ee97" - integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw== - -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/ms@*": - version "0.7.31" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" - integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== - -"@types/node@*": - version "18.11.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.3.tgz#78a6d7ec962b596fc2d2ec102c4dd3ef073fea6a" - integrity sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A== - -"@types/node@16.9.1": - version "16.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" - integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== - -"@types/node@^16.11.26": - version "16.11.68" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.68.tgz#30ee923f4d940793e0380f5ce61c0bd4b7196b6c" - integrity sha512-JkRpuVz3xCNCWaeQ5EHLR/6woMbHZz/jZ7Kmc63AkU+1HxnoUugzSWMck7dsR4DvNYX8jp9wTi9K7WvnxOIQZQ== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/plist@^3.0.1": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.2.tgz#61b3727bba0f5c462fe333542534a0c3e19ccb01" - integrity sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw== - dependencies: - "@types/node" "*" - xmlbuilder ">=11.0.1" - -"@types/prop-types@*": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== - -"@types/qrcode@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.5.0.tgz#6a98fe9a9a7b2a9a3167b6dde17eff999eabe40b" - integrity sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA== - dependencies: - "@types/node" "*" - -"@types/react-dom@18.0.6": - version "18.0.6" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.6.tgz#36652900024842b74607a17786b6662dd1e103a1" - integrity sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@18.0.21": - version "18.0.21" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.21.tgz#b8209e9626bb00a34c76f55482697edd2b43cc67" - integrity sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/semver@^7.3.12": - version "7.3.12" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.12.tgz#920447fdd78d76b19de0438b7f60df3c4a80bf1c" - integrity sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A== - -"@types/sockjs-client@^1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/sockjs-client/-/sockjs-client-1.5.1.tgz#7ed2093da89305af370511c4e3beb7e4ef0d7e87" - integrity sha512-bmZM6A1GPdjF0bcuIUC+50hZEMGkzMsiG9by6X9U+7IZFOiPtz7MJ9h05FSpPVxlj4i+TzzoG3ESo1FJlbLb6A== - -"@types/verror@^1.10.3": - version "1.10.6" - resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.6.tgz#3e600c62d210c5826460858f84bcbb65805460bb" - integrity sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ== - -"@types/ws@^8.5.3": - version "8.5.3" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" - integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^17.0.1": - version "17.0.13" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" - integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== - dependencies: - "@types/yargs-parser" "*" - -"@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@5.40.1": - version "5.40.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz#3203a6ff396b1194083faaa6e5110c401201d7d5" - integrity sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg== - dependencies: - "@typescript-eslint/scope-manager" "5.40.1" - "@typescript-eslint/type-utils" "5.40.1" - "@typescript-eslint/utils" "5.40.1" - debug "^4.3.4" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@5.40.1": - version "5.40.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.40.1.tgz#e7f8295dd8154d0d37d661ddd8e2f0ecfdee28dd" - integrity sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg== - dependencies: - "@typescript-eslint/scope-manager" "5.40.1" - "@typescript-eslint/types" "5.40.1" - "@typescript-eslint/typescript-estree" "5.40.1" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.40.1": - version "5.40.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz#a7a5197dfd234622a2421ea590ee0ccc02e18dfe" - integrity sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg== - dependencies: - "@typescript-eslint/types" "5.40.1" - "@typescript-eslint/visitor-keys" "5.40.1" - -"@typescript-eslint/type-utils@5.40.1": - version "5.40.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz#091e4ce3bebbdb68f4980bae9dee2e4e1725f601" - integrity sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q== - dependencies: - "@typescript-eslint/typescript-estree" "5.40.1" - "@typescript-eslint/utils" "5.40.1" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.40.1": - version "5.40.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.40.1.tgz#de37f4f64de731ee454bb2085d71030aa832f749" - integrity sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw== - -"@typescript-eslint/typescript-estree@5.40.1": - version "5.40.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz#9a7d25492f02c69882ce5e0cd1857b0c55645d72" - integrity sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA== - dependencies: - "@typescript-eslint/types" "5.40.1" - "@typescript-eslint/visitor-keys" "5.40.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.40.1": - version "5.40.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.40.1.tgz#3204fb73a559d3b7bab7dc9d3c44487c2734a9ca" - integrity sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw== - dependencies: - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.40.1" - "@typescript-eslint/types" "5.40.1" - "@typescript-eslint/typescript-estree" "5.40.1" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.40.1": - version "5.40.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz#f3d2bf5af192f4432b84cec6fdcb387193518754" - integrity sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw== - dependencies: - "@typescript-eslint/types" "5.40.1" - eslint-visitor-keys "^3.3.0" - -"@vitejs/plugin-react@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-2.1.0.tgz#4c99df15e71d2630601bd3018093bdc787d40e55" - integrity sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA== - dependencies: - "@babel/core" "^7.18.13" - "@babel/plugin-transform-react-jsx" "^7.18.10" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-jsx-self" "^7.18.6" - "@babel/plugin-transform-react-jsx-source" "^7.18.6" - magic-string "^0.26.2" - react-refresh "^0.14.0" - -"@zag-js/element-size@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@zag-js/element-size/-/element-size-0.1.0.tgz#dfdb3f66a70328d0c3149aae29b8f99c10590c22" - integrity sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ== - -"@zag-js/focus-visible@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz#9777bbaff8316d0b3a14a9095631e1494f69dbc7" - integrity sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv-keywords@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi@^0.3.0, ansi@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" - integrity sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A== - -any-base@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" - integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -app-builder-bin@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" - integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== - -app-builder-lib@23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-23.6.0.tgz#03cade02838c077db99d86212d61c5fc1d6da1a8" - integrity sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA== - dependencies: - "7zip-bin" "~5.1.1" - "@develar/schema-utils" "~2.6.5" - "@electron/universal" "1.2.1" - "@malept/flatpak-bundler" "^0.4.0" - async-exit-hook "^2.0.1" - bluebird-lst "^1.0.9" - builder-util "23.6.0" - builder-util-runtime "9.1.1" - chromium-pickle-js "^0.2.0" - debug "^4.3.4" - ejs "^3.1.7" - electron-osx-sign "^0.6.0" - electron-publish "23.6.0" - form-data "^4.0.0" - fs-extra "^10.1.0" - hosted-git-info "^4.1.0" - is-ci "^3.0.0" - isbinaryfile "^4.0.10" - js-yaml "^4.1.0" - lazy-val "^1.0.5" - minimatch "^3.1.2" - read-config-file "6.2.0" - sanitize-filename "^1.6.3" - semver "^7.3.7" - tar "^6.1.11" - temp-file "^3.4.0" - -arch@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -are-we-there-yet@~1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz#a2d28c93102aa6cc96245a26cb954de06ec53f0c" - integrity sha512-Zfw6bteqM9gQXZ1BIWOgM8xEwMrUGoyL8nW13+O+OOgNX3YhuDN1GDgg1NzdTlmm3j+9sHy7uBZ12r+z9lXnZQ== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.0 || ^1.1.13" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-hidden@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.1.tgz#ad8c1edbde360b454eb2bf717ea02da00bfee0f8" - integrity sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A== - dependencies: - tslib "^2.0.0" - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -array-includes@^3.1.4, array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" - integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -asar@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221" - integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg== - dependencies: - chromium-pickle-js "^0.2.0" - commander "^5.0.0" - glob "^7.1.6" - minimatch "^3.0.4" - optionalDependencies: - "@types/glob" "^7.1.1" - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-exit-hook@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" - integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== - -async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axe-core@^4.4.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" - integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== - -axios@0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" - integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== - dependencies: - follow-redirects "^1.14.8" - -axios@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" - integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1, base64-js@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -big-integer@^1.6.17: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -binary@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" - integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - -bindings@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bluebird-lst@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" - integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== - dependencies: - bluebird "^3.5.5" - -bluebird@^3.5.0, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bluebird@~3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" - integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== - -bmp-js@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" - integrity sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw== - -boolean@^3.0.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" - integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.21.3: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-equal@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" - integrity sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA== - -buffer-equal@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ== - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-indexof-polyfill@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" - integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== - -buffer-shims@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - integrity sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g== - -buffer@^5.1.0, buffer@^5.2.0, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" - integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== - -builder-util-runtime@9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz#2da7b34e78a64ad14ccd070d6eed4662d893bd60" - integrity sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw== - dependencies: - debug "^4.3.4" - sax "^1.2.4" - -builder-util@23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-23.6.0.tgz#1880ec6da7da3fd6fa19b8bd71df7f39e8d17dd9" - integrity sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ== - dependencies: - "7zip-bin" "~5.1.1" - "@types/debug" "^4.1.6" - "@types/fs-extra" "^9.0.11" - app-builder-bin "4.0.0" - bluebird-lst "^1.0.9" - builder-util-runtime "9.1.1" - chalk "^4.1.1" - cross-spawn "^7.0.3" - debug "^4.3.4" - fs-extra "^10.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-ci "^3.0.0" - js-yaml "^4.1.0" - source-map-support "^0.5.19" - stat-mode "^1.0.0" - temp-file "^3.4.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-lite@^1.0.30001400: - version "1.0.30001422" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001422.tgz#f2d7c6202c49a8359e6e35add894d88ef93edba1" - integrity sha512-hSesn02u1QacQHhaxl/kNMZwqVG35Sz/8DgvmgedxSH8z9UUpcDYSPYgsj3x5dQNRcNp6BwpSfQfVzYUTm+fog== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" - integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== - dependencies: - traverse ">=0.3.0 <0.4" - -chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^2.0.0, chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chokidar@^3.5.2, chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chromium-pickle-js@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" - integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== - -ci-info@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.5.0.tgz#bfac2a29263de4c829d806b1ab478e35091e171f" - integrity sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -clipboardy@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" - integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== - dependencies: - arch "^2.1.1" - execa "^1.0.0" - is-wsl "^2.1.1" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -cmake-js@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cmake-js/-/cmake-js-6.1.0.tgz#bec7381b58d454acee09d4fb0047153a005063a6" - integrity sha512-utmukLQftpgrCpGRCaHnkv4K27HZNNFqmBl4vnvccy0xp4c1erxjFU/Lq4wn5ngAhFZmpwBPQfoKWKThjSBiwg== - dependencies: - debug "^4" - fs-extra "^5.0.0" - is-iojs "^1.0.1" - lodash "^4" - memory-stream "0" - npmlog "^1.2.0" - rc "^1.2.7" - request "^2.54.0" - semver "^5.0.3" - splitargs "0" - tar "^4" - unzipper "^0.8.13" - url-join "0" - which "^1.0.9" - yargs "^3.6.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - integrity sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A== - dependencies: - graceful-readlink ">= 1.0.0" - -commander@8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -compare-version@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" - integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== - -compare-versions@4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-4.1.3.tgz#8f7b8966aef7dc4282b45dfa6be98434fc18a1a4" - integrity sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg== - -compute-scroll-into-view@1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz#80e3ebb25d6aa89f42e533956cb4b16a04cfe759" - integrity sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concurrently@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-6.5.1.tgz#4518c67f7ac680cf5c34d5adf399a2a2047edc8c" - integrity sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag== - dependencies: - chalk "^4.1.0" - date-fns "^2.16.1" - lodash "^4.17.21" - rxjs "^6.6.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" - tree-kill "^1.2.2" - yargs "^16.2.0" - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -consola@^2.15.0: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -console.table@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/console.table/-/console.table-0.10.0.tgz#0917025588875befd70cf2eff4bef2c6e2d75d04" - integrity sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g== - dependencies: - easy-table "1.1.0" - -convert-source-map@^1.5.0, convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -copy-to-clipboard@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== - dependencies: - toggle-selection "^1.0.6" - -core-js-pure@^3.25.1: - version "3.25.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.5.tgz#79716ba54240c6aa9ceba6eee08cf79471ba184d" - integrity sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -crc@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== - dependencies: - buffer "^5.1.0" - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-box-model@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" - integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== - dependencies: - tiny-invariant "^1.0.6" - -csstype@^3.0.11, csstype@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== - -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -date-fns@^2.16.1: - version "2.29.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" - integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== - -debug@4, debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.1.1, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -dijkstrajs@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257" - integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== - -dir-compare@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631" - integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA== - dependencies: - buffer-equal "1.0.0" - colors "1.0.3" - commander "2.9.0" - minimatch "3.0.4" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dmg-builder@23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-23.6.0.tgz#d39d3871bce996f16c07d2cafe922d6ecbb2a948" - integrity sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA== - dependencies: - app-builder-lib "23.6.0" - builder-util "23.6.0" - builder-util-runtime "9.1.1" - fs-extra "^10.0.0" - iconv-lite "^0.6.2" - js-yaml "^4.1.0" - optionalDependencies: - dmg-license "^1.0.11" - -dmg-license@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a" - integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q== - dependencies: - "@types/plist" "^3.0.1" - "@types/verror" "^1.10.3" - ajv "^6.10.0" - crc "^3.8.0" - iconv-corefoundation "^1.1.7" - plist "^3.0.4" - smart-buffer "^4.0.2" - verror "^1.10.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" - integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== - -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== - dependencies: - readable-stream "^2.0.2" - -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - -easy-table@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/easy-table/-/easy-table-1.1.0.tgz#86f9ab4c102f0371b7297b92a651d5824bc8cb73" - integrity sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA== - optionalDependencies: - wcwidth ">=1.0.1" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ejs@^3.1.7: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== - dependencies: - jake "^10.8.5" - -electron-builder@^23.3.3: - version "23.6.0" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-23.6.0.tgz#c79050cbdce90ed96c5feb67c34e9e0a21b5331b" - integrity sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw== - dependencies: - "@types/yargs" "^17.0.1" - app-builder-lib "23.6.0" - builder-util "23.6.0" - builder-util-runtime "9.1.1" - chalk "^4.1.1" - dmg-builder "23.6.0" - fs-extra "^10.0.0" - is-ci "^3.0.0" - lazy-val "^1.0.5" - read-config-file "6.2.0" - simple-update-notifier "^1.0.7" - yargs "^17.5.1" - -electron-osx-sign@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz#9b69c191d471d9458ef5b1e4fdd52baa059f1bb8" - integrity sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg== - dependencies: - bluebird "^3.5.0" - compare-version "^0.1.2" - debug "^2.6.8" - isbinaryfile "^3.0.2" - minimist "^1.2.0" - plist "^3.0.1" - -electron-publish@23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-23.6.0.tgz#ac9b469e0b07752eb89357dd660e5fb10b3d1ce9" - integrity sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg== - dependencies: - "@types/fs-extra" "^9.0.11" - builder-util "23.6.0" - builder-util-runtime "9.1.1" - chalk "^4.1.1" - fs-extra "^10.0.0" - lazy-val "^1.0.5" - mime "^2.5.2" - -electron-reload@^2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/electron-reload/-/electron-reload-2.0.0-alpha.1.tgz#6cad98df96695ca1d5462dc9407f7c620028ce99" - integrity sha512-hTde7gv0TEqxbxlB3pj2CwoyCQ9sdiQrcP8GkpzhosxyVeYM3mZbMEVKCZK3L0fED7Mz5A9IWmK7zEvi4H3P1g== - dependencies: - chokidar "^3.5.2" - -electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== - -electron@^21.1.1: - version "21.2.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-21.2.0.tgz#8eb65d69b36aa8dac0ee7330eab70181df211c8b" - integrity sha512-oKV4fo8l6jlOZ1cYZ4RpZz02ZxLuBo3SO7DH+FrJ8uDyCirP+eVJ/qlzu23odtNe0P7S/mYAZbC6abZHWoqtLg== - dependencies: - "@electron/get" "^1.14.1" - "@types/node" "^16.11.26" - extract-zip "^2.0.1" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encode-utf8@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" - integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== - -encodeurl@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^5.10.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: - version "1.20.4" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" - integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.2" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-error@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -esbuild-android-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz#5e8151d5f0a748c71a7fbea8cee844ccf008e6fc" - integrity sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q== - -esbuild-android-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz#5ee72a6baa444bc96ffcb472a3ba4aba2cc80666" - integrity sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA== - -esbuild-darwin-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz#70047007e093fa1b3ba7ef86f9b3fa63db51fe25" - integrity sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q== - -esbuild-darwin-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz#41c951f23d9a70539bcca552bae6e5196696ae04" - integrity sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw== - -esbuild-freebsd-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz#a761b5afd12bbedb7d56c612e9cfa4d2711f33f0" - integrity sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw== - -esbuild-freebsd-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz#6b0839d4d58deabc6cbd96276eb8cbf94f7f335e" - integrity sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g== - -esbuild-linux-32@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz#bd50bfe22514d434d97d5150977496e2631345b4" - integrity sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA== - -esbuild-linux-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz#074bb2b194bf658245f8490f29c01ffcdfa8c931" - integrity sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA== - -esbuild-linux-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz#3bf789c4396dc032875a122988efd6f3733f28f5" - integrity sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ== - -esbuild-linux-arm@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz#b91b5a8d470053f6c2c9c8a5e67ec10a71fe4a67" - integrity sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A== - -esbuild-linux-mips64le@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz#2fb54099ada3c950a7536dfcba46172c61e580e2" - integrity sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A== - -esbuild-linux-ppc64le@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz#9e3b8c09825fb27886249dfb3142a750df29a1b7" - integrity sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg== - -esbuild-linux-riscv64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz#923d0f5b6e12ee0d1fe116b08e4ae4478fe40693" - integrity sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA== - -esbuild-linux-s390x@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz#3b1620220482b96266a0c6d9d471d451a1eab86f" - integrity sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww== - -esbuild-netbsd-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz#276730f80da646859b1af5a740e7802d8cd73e42" - integrity sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w== - -esbuild-openbsd-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz#bd0eea1dd2ca0722ed489d88c26714034429f8ae" - integrity sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw== - -esbuild-sunos-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz#5e56bf9eef3b2d92360d6d29dcde7722acbecc9e" - integrity sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg== - -esbuild-windows-32@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz#a4f1a301c1a2fa7701fcd4b91ef9d2620cf293d0" - integrity sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw== - -esbuild-windows-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz#bc2b467541744d653be4fe64eaa9b0dbbf8e07f6" - integrity sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA== - -esbuild-windows-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz#9a7266404334a86be800957eaee9aef94c3df328" - integrity sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA== - -esbuild@^0.15.9: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.12.tgz#6c8e22d6d3b7430d165c33848298d3fc9a1f251c" - integrity sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng== - optionalDependencies: - "@esbuild/android-arm" "0.15.12" - "@esbuild/linux-loong64" "0.15.12" - esbuild-android-64 "0.15.12" - esbuild-android-arm64 "0.15.12" - esbuild-darwin-64 "0.15.12" - esbuild-darwin-arm64 "0.15.12" - esbuild-freebsd-64 "0.15.12" - esbuild-freebsd-arm64 "0.15.12" - esbuild-linux-32 "0.15.12" - esbuild-linux-64 "0.15.12" - esbuild-linux-arm "0.15.12" - esbuild-linux-arm64 "0.15.12" - esbuild-linux-mips64le "0.15.12" - esbuild-linux-ppc64le "0.15.12" - esbuild-linux-riscv64 "0.15.12" - esbuild-linux-s390x "0.15.12" - esbuild-netbsd-64 "0.15.12" - esbuild-openbsd-64 "0.15.12" - esbuild-sunos-64 "0.15.12" - esbuild-windows-32 "0.15.12" - esbuild-windows-64 "0.15.12" - esbuild-windows-arm64 "0.15.12" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-import-resolver-typescript@3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz#9431acded7d898fd94591a08ea9eec3514c7de91" - integrity sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ== - dependencies: - debug "^4.3.4" - enhanced-resolve "^5.10.0" - get-tsconfig "^4.2.0" - globby "^13.1.2" - is-core-module "^2.10.0" - is-glob "^4.0.3" - synckit "^0.8.4" - -eslint-module-utils@^2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" - integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== - dependencies: - debug "^3.2.7" - -eslint-plugin-import@2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-jsx-a11y@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" - integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== - dependencies: - "@babel/runtime" "^7.18.9" - aria-query "^4.2.2" - array-includes "^3.1.5" - ast-types-flow "^0.0.7" - axe-core "^4.4.3" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.2" - language-tags "^1.0.5" - minimatch "^3.1.2" - semver "^6.3.0" - -eslint-plugin-react-hooks@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react@7.31.10: - version "7.31.10" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz#6782c2c7fe91c09e715d536067644bbb9491419a" - integrity sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA== - dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.7" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@8.25.0: - version "8.25.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.25.0.tgz#00eb962f50962165d0c4ee3327708315eaa8058b" - integrity sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A== - dependencies: - "@eslint/eslintrc" "^1.3.3" - "@humanwhocodes/config-array" "^0.10.5" - "@humanwhocodes/module-importer" "^1.0.1" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.1" - globals "^13.15.0" - globby "^11.1.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-sdsl "^4.1.4" - 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.0" - text-table "^0.2.0" - -espree@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" - integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -eventsource@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-2.0.2.tgz#76dfcc02930fb2ff339520b6d290da573a9e8508" - integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exif-parser@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" - integrity sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw== - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extract-zip@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-type@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18" - integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -focus-lock@^0.11.2: - version "0.11.3" - resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.11.3.tgz#c094e8f109d780f56038abdeec79328fd56b627f" - integrity sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg== - dependencies: - tslib "^2.0.3" - -follow-redirects@^1.14.8, follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -framer-motion@7.6.1: - version "7.6.1" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-7.6.1.tgz#45356eb5519275bce42121a3b3849a6243d45a22" - integrity sha512-8US03IWJKrLoSb81l5OahNzB9Sv7Jo1RhIwUoTG/25BRUdO9lOqq/klsdZqNmNG0ua9IEJJQ8hkYpETJ4N6VSw== - dependencies: - "@motionone/dom" "10.13.1" - framesync "6.1.2" - hey-listen "^1.0.8" - popmotion "11.0.5" - style-value-types "5.1.2" - tslib "2.4.0" - optionalDependencies: - "@emotion/is-prop-valid" "^0.8.2" - -framesync@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/framesync/-/framesync-5.3.0.tgz#0ecfc955e8f5a6ddc8fdb0cc024070947e1a0d9b" - integrity sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA== - dependencies: - tslib "^2.1.0" - -framesync@6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.1.2.tgz#755eff2fb5b8f3b4d2b266dd18121b300aefea27" - integrity sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g== - dependencies: - tslib "2.4.0" - -fs-extra@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" - integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^10.0.0, fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" - integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0, fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -fstream@~1.0.10: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gauge@~1.2.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" - integrity sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA== - dependencies: - ansi "^0.3.0" - has-unicode "^2.0.0" - lodash.pad "^4.1.0" - lodash.padend "^4.1.0" - lodash.padstart "^4.1.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-nonce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" - integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-tsconfig@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.2.0.tgz#ff368dd7104dab47bf923404eb93838245c66543" - integrity sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg== - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -gifwrap@^0.9.2: - version "0.9.4" - resolved "https://registry.yarnpkg.com/gifwrap/-/gifwrap-0.9.4.tgz#f4eb6169ba027d61df64aafbdcb1f8ae58ccc0c5" - integrity sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ== - dependencies: - image-q "^4.0.0" - omggif "^1.0.10" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" - integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== - dependencies: - boolean "^3.0.1" - es6-error "^4.1.1" - matcher "^3.0.0" - roarr "^2.15.3" - semver "^7.3.2" - serialize-error "^7.0.1" - -global-tunnel-ng@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" - integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== - dependencies: - encodeurl "^1.0.2" - lodash "^4.17.10" - npm-conf "^1.1.3" - tunnel "^0.0.6" - -global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globby@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" - integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.2.11" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^4.0.0" - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hey-listen@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" - integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== - -hoist-non-react-statics@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -iconv-corefoundation@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" - integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== - dependencies: - cli-truncate "^2.1.0" - node-addon-api "^1.6.3" - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -image-q@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/image-q/-/image-q-4.0.0.tgz#31e075be7bae3c1f42a85c469b4732c358981776" - integrity sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw== - dependencies: - "@types/node" "16.9.1" - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.4, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.2.tgz#1310517a87a0814d25336c78a20b44c3d9b7629d" - integrity sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-ci@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-core-module@^2.10.0, is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-iojs@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-iojs/-/is-iojs-1.1.0.tgz#4c11033b5d5d94d6eab3775dedc9be7d008325f1" - integrity sha512-tLn1j3wYSL6DkvEI+V/j0pKohpa5jk+ER74v6S4SgCXnjS0WA+DoZbwZBrrhgwksMvtuwndyGeG5F8YMsoBzSA== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isbinaryfile@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" - -isbinaryfile@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" - integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -iterare@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" - integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jimp@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.16.2.tgz#c03e296381ae37586e27f209d134d4596d112f7b" - integrity sha512-UpItBk81a92f8oEyoGYbO3YK4QcM0hoIyuGHmShoF9Ov63P5Qo7Q/X2xsAgnODmSuDJFOtrPtJd5GSWW4LKdOQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/custom" "^0.16.2" - "@jimp/plugins" "^0.16.2" - "@jimp/types" "^0.16.2" - regenerator-runtime "^0.13.3" - -jpeg-js@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.4.tgz#a9f1c6f1f9f0fa80cdb3484ed9635054d28936aa" - integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== - -js-sdsl@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" - integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.2.0, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -language-subtag-registry@~0.3.2: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== - dependencies: - language-subtag-registry "~0.3.2" - -lazy-val@^1.0.4, lazy-val@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" - integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== - dependencies: - invert-kv "^1.0.0" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -listenercount@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" - integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== - -load-bmfont@^1.3.1, load-bmfont@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9" - integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA== - dependencies: - buffer-equal "0.0.1" - mime "^1.3.4" - parse-bmfont-ascii "^1.0.3" - parse-bmfont-binary "^1.0.5" - parse-bmfont-xml "^1.1.4" - phin "^2.9.1" - xhr "^2.0.1" - xtend "^4.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.mergewith@4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" - integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== - -lodash.pad@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - integrity sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg== - -lodash.padend@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw== - -lodash.padstart@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw== - -lodash@4.17.21, lodash@^4, lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.26.2: - version "0.26.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" - integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== - dependencies: - sourcemap-codec "^1.4.8" - -matcher@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" - integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== - dependencies: - escape-string-regexp "^4.0.0" - -memory-stream@0: - version "0.0.3" - resolved "https://registry.yarnpkg.com/memory-stream/-/memory-stream-0.0.3.tgz#ebe8dd1c3b8bc38c0e7941e9ddd5aebe6b4de83f" - integrity sha512-q0D3m846qY6ZkIt+19ZemU5vH56lpOZZwoJc3AICARKh/menBuayQUjAGPrqtHQQMUYERSdOrej92J9kz7LgYA== - dependencies: - readable-stream "~1.0.26-2" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@^1.3.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== - dependencies: - dom-walk "^0.1.0" - -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0: - version "3.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" - integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== - dependencies: - yallist "^4.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-abort-controller@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-2.0.0.tgz#800e0d250d3b977175e48df4f74c2d3960076a79" - integrity sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA== - -node-addon-api@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.0.tgz#812446a1001a54f71663bed188314bba07e09247" - integrity sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg== - -node-addon-api@^1.6.3: - version "1.7.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" - integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== - -node-fetch@^2.6.1: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -npm-conf@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" - integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== - dependencies: - config-chain "^1.1.11" - pify "^3.0.0" - -npm-run-all@4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" - integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== - dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - cross-spawn "^6.0.5" - memorystream "^0.3.1" - minimatch "^3.0.4" - pidtree "^0.3.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - -npmlog@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-1.2.1.tgz#28e7be619609b53f7ad1dd300a10d64d716268b6" - integrity sha512-1J5KqSRvESP6XbjPaXt2H6qDzgizLTM7x0y1cXIjP2PpvdCqyNC7TO3cPRKsuYlElbi/DwkzRRdG2zpmE0IktQ== - dependencies: - ansi "~0.3.0" - are-we-there-yet "~1.0.0" - gauge "~1.2.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-hash@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.3, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.19.5" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -omggif@^1.0.10, omggif@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" - integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== - dependencies: - lcid "^1.0.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@^1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-bmfont-ascii@^1.0.3: - version "1.0.6" - resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" - integrity sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA== - -parse-bmfont-binary@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" - integrity sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA== - -parse-bmfont-xml@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389" - integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== - dependencies: - xml-parse-from-string "^1.0.0" - xml2js "^0.4.5" - -parse-headers@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.2.0.tgz#fa7877ecbc495c601907562222453c43cc204a5f" - integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -phin@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" - integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pidtree@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" - integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -pixelmatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" - integrity sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA== - dependencies: - pngjs "^3.0.0" - -plist@^3.0.1, plist@^3.0.4: - version "3.0.6" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" - integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== - dependencies: - base64-js "^1.5.1" - xmlbuilder "^15.1.1" - -pngjs@^3.0.0, pngjs@^3.3.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -pngjs@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" - integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== - -popmotion@11.0.5: - version "11.0.5" - resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-11.0.5.tgz#8e3e014421a0ffa30ecd722564fd2558954e1f7d" - integrity sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA== - dependencies: - framesync "6.1.2" - hey-listen "^1.0.8" - style-value-types "5.1.2" - tslib "2.4.0" - -postcss@^8.4.16: - version "8.4.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2" - integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - -prettier@2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -progress@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -prop-types@^15.6.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -psl@^1.1.28: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qrcode@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.1.tgz#0103f97317409f7bc91772ef30793a54cd59f0cb" - integrity sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg== - dependencies: - dijkstrajs "^1.0.1" - encode-utf8 "^1.0.3" - pngjs "^5.0.0" - yargs "^15.3.1" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-clientside-effect@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz#29f9b14e944a376b03fb650eed2a754dd128ea3a" - integrity sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg== - dependencies: - "@babel/runtime" "^7.12.13" - -react-dom@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-fast-compare@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== - -react-focus-lock@^2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.9.1.tgz#094cfc19b4f334122c73bb0bff65d77a0c92dd16" - integrity sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg== - dependencies: - "@babel/runtime" "^7.0.0" - focus-lock "^0.11.2" - prop-types "^15.6.2" - react-clientside-effect "^1.2.6" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - -react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-refresh@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" - integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== - -react-remove-scroll-bar@^2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" - integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== - dependencies: - react-style-singleton "^2.2.1" - tslib "^2.0.0" - -react-remove-scroll@^2.5.4: - version "2.5.5" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" - integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== - dependencies: - react-remove-scroll-bar "^2.3.3" - react-style-singleton "^2.2.1" - tslib "^2.1.0" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - -react-style-singleton@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" - integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== - dependencies: - get-nonce "^1.0.0" - invariant "^2.2.4" - tslib "^2.0.0" - -react@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -read-config-file@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.2.0.tgz#71536072330bcd62ba814f91458b12add9fc7ade" - integrity sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg== - dependencies: - dotenv "^9.0.2" - dotenv-expand "^5.1.0" - js-yaml "^4.1.0" - json5 "^2.2.0" - lazy-val "^1.0.4" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~1.0.26-2: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@~2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" - integrity sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw== - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reflect-metadata@0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" - integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== - -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: - version "0.13.10" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" - integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== - -regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -request@^2.54.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.3: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -roarr@^2.15.3: - version "2.15.4" - resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" - integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== - dependencies: - boolean "^3.0.1" - detect-node "^2.0.4" - globalthis "^1.0.1" - json-stringify-safe "^5.0.1" - semver-compare "^1.0.0" - sprintf-js "^1.1.2" - -rollup@~2.78.0: - version "2.78.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f" - integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg== - optionalDependencies: - fsevents "~2.3.2" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@7.5.5: - version "7.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" - integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== - dependencies: - tslib "^2.1.0" - -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.5.5: - version "7.5.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== - dependencies: - tslib "^2.1.0" - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sanitize-filename@^1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" - integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== - dependencies: - truncate-utf8-bytes "^1.0.0" - -sax@>=0.6.0, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2, semver@^7.3.7: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - -semver@~7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -serialize-error@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" - integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== - dependencies: - type-fest "^0.13.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -setimmediate@~1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.7.4" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" - integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-update-notifier@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz#7edf75c5bdd04f88828d632f762b2bc32996a9cc" - integrity sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew== - dependencies: - semver "~7.0.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -smart-buffer@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -sockjs-client@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.6.1.tgz#350b8eda42d6d52ddc030c39943364c11dcad806" - integrity sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw== - dependencies: - debug "^3.2.7" - eventsource "^2.0.2" - faye-websocket "^0.11.4" - inherits "^2.0.4" - url-parse "^1.5.10" - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-support@^0.5.19: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== - -splitargs@0: - version "0.0.7" - resolved "https://registry.yarnpkg.com/splitargs/-/splitargs-0.0.7.tgz#fe9f7ae657371b33b10cb80da143cf8249cf6b3b" - integrity sha512-UUFYD2oWbNwULH6WoVtLUOw8ch586B+HUqcsAjjjeoBQAM1bD4wZRXu01koaxyd8UeYpybWqW4h+lO1Okv40Tg== - -sprintf-js@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stat-mode@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" - integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" - side-channel "^1.0.4" - -string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -style-value-types@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.1.2.tgz#6be66b237bd546048a764883528072ed95713b62" - integrity sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q== - dependencies: - hey-listen "^1.0.8" - tslib "2.4.0" - -stylis@4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== - -sumchecker@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" - integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== - dependencies: - debug "^4.1.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.4.tgz#0e6b392b73fafdafcde56692e3352500261d64ec" - integrity sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw== - dependencies: - "@pkgr/utils" "^2.3.1" - tslib "^2.4.0" - -tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar@^4: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -tar@^6.1.11: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-file@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" - integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== - dependencies: - async-exit-hook "^2.0.1" - fs-extra "^10.0.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -timm@^1.6.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" - integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== - -tiny-glob@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - -tiny-invariant@^1.0.6: - version "1.3.1" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" - integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== - -tinycolor2@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" - integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== - -tmp-promise@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" - integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== - dependencies: - tmp "^0.2.0" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" - integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -truncate-utf8-bytes@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" - integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== - dependencies: - utf8-byte-length "^1.0.1" - -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" - integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== - -tslib@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tslib@2.4.0, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typescript@4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unzipper@^0.8.13: - version "0.8.14" - resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.8.14.tgz#ade0524cd2fc14d11b8de258be22f9d247d3f79b" - integrity sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w== - dependencies: - big-integer "^1.6.17" - binary "~0.3.0" - bluebird "~3.4.1" - buffer-indexof-polyfill "~1.0.0" - duplexer2 "~0.1.4" - fstream "~1.0.10" - listenercount "~1.0.1" - readable-stream "~2.1.5" - setimmediate "~1.0.4" - -update-browserslist-db@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-join@0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-0.0.1.tgz#1db48ad422d3402469a87f7d97bdebfe4fb1e3c8" - integrity sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw== - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - -url-parse@^1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -use-callback-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" - integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== - dependencies: - tslib "^2.0.0" - -use-sidecar@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" - integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== - dependencies: - detect-node-es "^1.1.0" - tslib "^2.0.0" - -utf8-byte-length@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" - integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== - -utif@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759" - integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg== - dependencies: - pako "^1.0.5" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -verror@^1.10.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" - integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vite-electron-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/vite-electron-plugin/-/vite-electron-plugin-0.4.6.tgz#f408d523c573baf99140f84f8957f843f467f409" - integrity sha512-ctHow5YxXoAok816zSp5RazaRcVJ8sQSgTpNR4LhV5rR1LH/MdMagmSsyjtl2JC1BXLPmh62s/eMiwX4ov7j0A== - dependencies: - chokidar "^3.5.3" - fast-glob "^3.2.12" - -vite-plugin-electron-renderer@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/vite-plugin-electron-renderer/-/vite-plugin-electron-renderer-0.10.1.tgz#0a1db65b79396f7f008effc6ecf10901e8628b17" - integrity sha512-N9QXl1QbwAwZesvxMbWpBvYK4BkL4Xt/812RKCAf1b0eOlwW8jEDXuREsax2GBDdAS5kfOjf8V3Trtu/nFvS0A== - -vite@3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/vite/-/vite-3.1.8.tgz#fa29144167d19b773baffd65b3972ea4c12359c9" - integrity sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg== - dependencies: - esbuild "^0.15.9" - postcss "^8.4.16" - resolve "^1.22.1" - rollup "~2.78.0" - optionalDependencies: - fsevents "~2.3.2" - -wcwidth@>=1.0.1, wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which@^1.0.9, which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw== - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -xhr@^2.0.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== - dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml-parse-from-string@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" - integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== - -xml2js@^0.4.5: - version "0.4.23" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" - integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: - version "15.1.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" - integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.0, yallist@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.0: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.5.1: - version "17.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.0.tgz#e134900fc1f218bc230192bdec06a0a5f973e46c" - integrity sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - -yargs@^3.6.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg== - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 1ad50b67b7fd3daebd1834e82afa06625e3261b8 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 29 Oct 2022 22:07:34 +0900 Subject: [PATCH 002/189] disable nodeIntegration --- desktop/packages/main/src/pointer.ts | 20 +++++++++--- desktop/packages/main/src/window.ts | 4 +-- desktop/packages/preload/src/index.ts | 18 ++++++++++- desktop/packages/renderer/src/overlay/App.tsx | 32 ++++++++++--------- .../packages/renderer/src/overlay/types.ts | 6 ---- 5 files changed, 52 insertions(+), 28 deletions(-) delete mode 100644 desktop/packages/renderer/src/overlay/types.ts diff --git a/desktop/packages/main/src/pointer.ts b/desktop/packages/main/src/pointer.ts index e032f00c..fcedc847 100644 --- a/desktop/packages/main/src/pointer.ts +++ b/desktop/packages/main/src/pointer.ts @@ -1,4 +1,5 @@ -import { BrowserWindow, screen } from "electron"; +import { app, BrowserWindow, screen } from "electron"; +import { join } from "node:path"; import type { AppState } from "./AppState"; import type { Coordinate } from "./types"; @@ -23,8 +24,13 @@ export const showOverlayWindow = async (appState: AppState) => { transparent: true, focusable: false, webPreferences: { - nodeIntegration: true, - contextIsolation: false, + preload: join( + app.getAppPath(), + "packages", + "preload", + "dist", + "index.cjs" + ), }, }); } @@ -43,7 +49,13 @@ export const toggleOverlayWindowDevTools = () => { if (overlayWindow === null) { return; } - overlayWindow.webContents.toggleDevTools(); + if (overlayWindow.webContents.isDevToolsOpened()) { + overlayWindow.webContents.closeDevTools(); + } else { + overlayWindow.webContents.openDevTools({ + mode: "detach", + }); + } }; export const sendPointerPosition = (position: Coordinate) => { diff --git a/desktop/packages/main/src/window.ts b/desktop/packages/main/src/window.ts index c9463061..7df638dd 100644 --- a/desktop/packages/main/src/window.ts +++ b/desktop/packages/main/src/window.ts @@ -1,9 +1,9 @@ -import type { BrowserWindow } from "electron"; +import { app, BrowserWindow } from "electron"; const base = import.meta.env.DEV && import.meta.env.VITE_DEV_SERVER_URL !== undefined ? import.meta.env.VITE_DEV_SERVER_URL - : new URL("../renderer/dist", "file://" + __dirname).toString(); + : `file://${app.getAppPath()}/packages/renderer/dist/`; const getURL = (fileName: string, params?: { [K in string]: string }) => { const url = new URL(fileName, base); diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index cb0ff5c3..a3331248 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -1 +1,17 @@ -export {}; +import { ipcRenderer } from "electron"; + +export type Coordinate = { x: number; y: number }; + +export const onUpdatePointerPosition = ( + callback: (position: Coordinate) => void +) => { + ipcRenderer.on("update-pointer-position", (_, position: Coordinate) => { + callback(position); + }); +}; + +export const onHidePointer = (callback: () => void) => { + ipcRenderer.on("hide-pointer", () => { + callback(); + }); +}; diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index 849cbab9..534e604e 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -1,8 +1,13 @@ -import { ipcRenderer } from "electron"; import { useEffect, useState } from "react"; import { Pointer } from "./Pointer"; -import type { Coordinate } from "./types"; + +import { + Coordinate, + onHidePointer, + onUpdatePointerPosition, + // eslint-disable-next-line import/no-unresolved +} from "#preload"; export const App = () => { const [position, setPosition] = useState(null); @@ -12,21 +17,18 @@ export const App = () => { const [cnt, setCnt] = useState(0); useEffect(() => { - ipcRenderer.on( - "update-pointer-position", - (_, position: Coordinate | null) => { - setPosition(position); - if (position === null) { - setShowingPointer(false); - setCnt(0); - } else { - setShowingPointer(true); - setCnt((cnt) => cnt + 1); - } + onUpdatePointerPosition((position) => { + setPosition(position); + if (position === null) { + setShowingPointer(false); + setCnt(0); + } else { + setShowingPointer(true); + setCnt((cnt) => cnt + 1); } - ); + }); - ipcRenderer.on("hide-pointer", () => { + onHidePointer(() => { setShowingPointer(false); setCnt(0); setPosition(null); diff --git a/desktop/packages/renderer/src/overlay/types.ts b/desktop/packages/renderer/src/overlay/types.ts deleted file mode 100644 index 4d11f39b..00000000 --- a/desktop/packages/renderer/src/overlay/types.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type Coordinate = { x: number; y: number }; - -export type ElectronApi = { - onUpdateRotation: (callback: (position: Coordinate) => void) => void; - hidePointer: (callback: () => void) => void; -}; From ac86fcdcb5e005fda42c371bc31bf080e8442b01 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 29 Oct 2022 22:50:21 +0900 Subject: [PATCH 003/189] add packaging script --- desktop/.electron-builder.config.js | 13 +++++++++++ desktop/README.md | 6 +++++ .../menu-bar-icon.ico | Bin .../menu-bar-icon.png | Bin desktop/package-lock.json | 22 +++++++----------- desktop/package.json | 10 +++++++- desktop/packages/main/package.json | 6 ----- desktop/packages/main/src/menu/tray.ts | 4 ++-- desktop/packages/main/src/path.ts | 4 ++-- 9 files changed, 41 insertions(+), 24 deletions(-) create mode 100644 desktop/.electron-builder.config.js rename desktop/{buildResources => assets}/menu-bar-icon.ico (100%) rename desktop/{buildResources => assets}/menu-bar-icon.png (100%) diff --git a/desktop/.electron-builder.config.js b/desktop/.electron-builder.config.js new file mode 100644 index 00000000..37d3cb25 --- /dev/null +++ b/desktop/.electron-builder.config.js @@ -0,0 +1,13 @@ +/** + * @type {import('electron-builder').Configuration} + * @see https://www.electron.build/configuration/configuration + */ +const config = { + directories: { + output: "dist", + }, + files: ["packages/**/dist/**"], + extraResources: ["assets"], +}; + +module.exports = config; diff --git a/desktop/README.md b/desktop/README.md index d0cbdc9c..0d13264d 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -40,6 +40,12 @@ npm run code-check npm run build ``` +### パッケージング + +```sh +npm run pack +``` + ### 使用技術 - Electron@^8.25.0 diff --git a/desktop/buildResources/menu-bar-icon.ico b/desktop/assets/menu-bar-icon.ico similarity index 100% rename from desktop/buildResources/menu-bar-icon.ico rename to desktop/assets/menu-bar-icon.ico diff --git a/desktop/buildResources/menu-bar-icon.png b/desktop/assets/menu-bar-icon.png similarity index 100% rename from desktop/buildResources/menu-bar-icon.png rename to desktop/assets/menu-bar-icon.png diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 9703219a..1d2e0136 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -11,6 +11,12 @@ "workspaces": [ "packages/*" ], + "dependencies": { + "@nut-tree/nut-js": "2.3.0", + "@stomp/stompjs": "6.1.2", + "axios": "1.1.3", + "sockjs-client": "1.6.1" + }, "devDependencies": { "@smartpointer-desktop/eslintrc": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", @@ -12071,12 +12077,6 @@ "packages/main": { "name": "@smartpointer-desktop/main", "version": "1.0.0", - "dependencies": { - "@nut-tree/nut-js": "2.3.0", - "@stomp/stompjs": "6.1.2", - "axios": "1.1.3", - "sockjs-client": "1.6.1" - }, "devDependencies": { "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.0.0", @@ -14392,14 +14392,10 @@ "@smartpointer-desktop/main": { "version": "file:packages/main", "requires": { - "@nut-tree/nut-js": "2.3.0", "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", - "@stomp/stompjs": "6.1.2", - "@types/sockjs-client": "1.5.1", - "axios": "1.1.3", - "sockjs-client": "1.6.1" + "@types/sockjs-client": "1.5.1" } }, "@smartpointer-desktop/preload": { @@ -14420,8 +14416,8 @@ "@react-hook/window-size": "3.1.1", "@smartpointer-desktop/eslintrc": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", - "@tsconfig/strictest": "*", - "@vitejs/plugin-react": "*", + "@tsconfig/strictest": "1.0.2", + "@vitejs/plugin-react": "2.2.0", "framer-motion": "7.6.2", "qrcode": "1.5.1", "react": "18.2.0", diff --git a/desktop/package.json b/desktop/package.json index a82f18a2..1461e556 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -15,7 +15,15 @@ "check:format": "prettier . --check", "check:type": "tsc", "code-check": "run-p lint check:*", - "postinstall": "npm run generate-electron-vendors" + "postinstall": "npm run generate-electron-vendors", + "compile": "cross-env MODE=production npm run build && electron-builder build --config .electron-builder.config.js --dir --config.asar=false", + "pack": "cross-env MODE=production npm run build && electron-builder build --config .electron-builder.config.js" + }, + "dependencies": { + "@nut-tree/nut-js": "2.3.0", + "@stomp/stompjs": "6.1.2", + "axios": "1.1.3", + "sockjs-client": "1.6.1" }, "devDependencies": { "@smartpointer-desktop/eslintrc": "1.0.0", diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json index be226d15..39902834 100644 --- a/desktop/packages/main/package.json +++ b/desktop/packages/main/package.json @@ -8,12 +8,6 @@ }, "keywords": [], "author": "", - "dependencies": { - "@nut-tree/nut-js": "2.3.0", - "@stomp/stompjs": "6.1.2", - "axios": "1.1.3", - "sockjs-client": "1.6.1" - }, "devDependencies": { "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.0.0", diff --git a/desktop/packages/main/src/menu/tray.ts b/desktop/packages/main/src/menu/tray.ts index 06ac0517..60773402 100644 --- a/desktop/packages/main/src/menu/tray.ts +++ b/desktop/packages/main/src/menu/tray.ts @@ -1,7 +1,7 @@ import { Menu, Tray } from "electron"; import { join } from "path"; -import { buildResourcesPath } from "../path"; +import { assetsPath } from "../path"; import { renderMenuTemplate } from "./template"; @@ -9,7 +9,7 @@ export const createTray = ({ appState, ...menuTemplateParam }: Parameters[0]) => { - const iconPath = join(buildResourcesPath, "menu-bar-icon.png"); + const iconPath = join(assetsPath, "menu-bar-icon.png"); const tray = new Tray(iconPath); tray.setToolTip("スマートポインター"); diff --git a/desktop/packages/main/src/path.ts b/desktop/packages/main/src/path.ts index fd7f224f..f8f41757 100644 --- a/desktop/packages/main/src/path.ts +++ b/desktop/packages/main/src/path.ts @@ -1,7 +1,7 @@ import { app } from "electron"; import { join } from "path"; -export const buildResourcesPath = join( +export const assetsPath = join( app.isPackaged ? process.resourcesPath : app.getAppPath(), - "buildResources" + "assets" ); From 43f0ffe1e2a2d2f98020a37b12f3f8c90e6b2488 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 31 Oct 2022 15:40:25 +0900 Subject: [PATCH 004/189] ignore json for prettier --- desktop/.prettierignore | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/.prettierignore b/desktop/.prettierignore index f2bf80d7..6862acf5 100644 --- a/desktop/.prettierignore +++ b/desktop/.prettierignore @@ -2,6 +2,7 @@ packages/main/src/generated/http-client/* **/node_modules **/dist **/*.svg +**/*.json package-lock.json .electron-vendors.cache.json From 29d692a28cde7a3d0bbf2abd4ffb0fbacafb4628 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 31 Oct 2022 15:44:11 +0900 Subject: [PATCH 005/189] install missing types in renderer --- desktop/package-lock.json | 60 ++++++++++++++++++++------ desktop/packages/renderer/package.json | 3 ++ 2 files changed, 51 insertions(+), 12 deletions(-) diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 1d2e0136..9571ff82 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -3216,27 +3216,42 @@ "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "optional": true, - "peer": true + "devOptional": true + }, + "node_modules/@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/react": { "version": "18.0.24", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz", "integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==", - "optional": true, - "peer": true, + "devOptional": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, + "node_modules/@types/react-dom": { + "version": "18.0.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.8.tgz", + "integrity": "sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "optional": true, - "peer": true + "devOptional": true }, "node_modules/@types/semver": { "version": "7.3.13", @@ -12114,6 +12129,9 @@ "@smartpointer-desktop/eslintrc": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", "@tsconfig/strictest": "1.0.2", + "@types/qrcode": "1.5.0", + "@types/react": "18.0.24", + "@types/react-dom": "18.0.8", "@vitejs/plugin-react": "2.2.0" } }, @@ -14417,6 +14435,9 @@ "@smartpointer-desktop/eslintrc": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", "@tsconfig/strictest": "1.0.2", + "@types/qrcode": "1.5.0", + "@types/react": "18.0.24", + "@types/react-dom": "18.0.8", "@vitejs/plugin-react": "2.2.0", "framer-motion": "7.6.2", "qrcode": "1.5.1", @@ -14582,27 +14603,42 @@ "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "optional": true, - "peer": true + "devOptional": true + }, + "@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "dev": true, + "requires": { + "@types/node": "*" + } }, "@types/react": { "version": "18.0.24", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz", "integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==", - "optional": true, - "peer": true, + "devOptional": true, "requires": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, + "@types/react-dom": { + "version": "18.0.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.8.tgz", + "integrity": "sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "optional": true, - "peer": true + "devOptional": true }, "@types/semver": { "version": "7.3.13", diff --git a/desktop/packages/renderer/package.json b/desktop/packages/renderer/package.json index bbf72882..6dae2813 100644 --- a/desktop/packages/renderer/package.json +++ b/desktop/packages/renderer/package.json @@ -6,6 +6,9 @@ "@smartpointer-desktop/eslintrc": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", "@tsconfig/strictest": "1.0.2", + "@types/qrcode": "1.5.0", + "@types/react": "18.0.24", + "@types/react-dom": "18.0.8", "@vitejs/plugin-react": "2.2.0" }, "scripts": { From 7ca71ecdac0def0edba82515222e63b9cfe60733 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 31 Oct 2022 15:46:23 +0900 Subject: [PATCH 006/189] add shared package --- desktop/package-lock.json | 28 ++++++++++++++++++++++++- desktop/packages/main/package.json | 3 +++ desktop/packages/main/tsconfig.json | 14 ++++++++++--- desktop/packages/preload/package.json | 1 + desktop/packages/preload/tsconfig.json | 6 +++++- desktop/packages/renderer/package.json | 1 + desktop/packages/renderer/tsconfig.json | 19 +++++++++++++---- desktop/packages/shared/index.d.ts | 1 + desktop/packages/shared/package.json | 8 +++++++ desktop/packages/shared/tsconfig.json | 3 +++ 10 files changed, 75 insertions(+), 9 deletions(-) create mode 100644 desktop/packages/shared/index.d.ts create mode 100644 desktop/packages/shared/package.json create mode 100644 desktop/packages/shared/tsconfig.json diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 9571ff82..14a9eb65 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -3057,6 +3057,10 @@ "resolved": "packages/renderer", "link": true }, + "node_modules/@smartpointer-desktop/shared": { + "resolved": "packages/shared", + "link": true + }, "node_modules/@smartpointer-desktop/tsconfig": { "resolved": "packages/tsconfig", "link": true @@ -12092,6 +12096,9 @@ "packages/main": { "name": "@smartpointer-desktop/main", "version": "1.0.0", + "dependencies": { + "@smartpointer-desktop/shared": "1.0.0" + }, "devDependencies": { "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.0.0", @@ -12103,6 +12110,7 @@ "name": "@smartpointer-desktop/preload", "version": "1.0.0", "dependencies": { + "@smartpointer-desktop/shared": "1.0.0", "unplugin-auto-expose": "0.0.3" }, "devDependencies": { @@ -12119,6 +12127,7 @@ "@emotion/styled": "11.10.5", "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", + "@smartpointer-desktop/shared": "1.0.0", "framer-motion": "7.6.2", "qrcode": "1.5.1", "react": "18.2.0", @@ -12138,7 +12147,6 @@ "packages/shared": { "name": "@smartpointer-desktop/shared", "version": "1.0.0", - "extraneous": true, "devDependencies": { "@tsconfig/node16-strictest-esm": "1.0.3", "@typescript-eslint/eslint-plugin": "5.41.0", @@ -14412,6 +14420,7 @@ "requires": { "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/shared": "*", "@smartpointer-desktop/tsconfig": "1.0.0", "@types/sockjs-client": "1.5.1" } @@ -14420,6 +14429,7 @@ "version": "file:packages/preload", "requires": { "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/shared": "*", "@smartpointer-desktop/tsconfig": "1.0.0", "unplugin-auto-expose": "0.0.3" } @@ -14433,6 +14443,7 @@ "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", "@smartpointer-desktop/eslintrc": "1.0.0", + "@smartpointer-desktop/shared": "*", "@smartpointer-desktop/tsconfig": "1.0.0", "@tsconfig/strictest": "1.0.2", "@types/qrcode": "1.5.0", @@ -14446,6 +14457,21 @@ "unplugin-auto-expose": "0.0.3" } }, + "@smartpointer-desktop/shared": { + "version": "file:packages/shared", + "requires": { + "@tsconfig/node16-strictest-esm": "1.0.3", + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0", + "eslint": "8.26.0", + "eslint-config-prettier": "8.5.0", + "eslint-import-resolver-typescript": "3.5.2", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-react": "7.31.10", + "eslint-plugin-react-hooks": "4.6.0" + } + }, "@smartpointer-desktop/tsconfig": { "version": "file:packages/tsconfig", "requires": { diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json index 39902834..f316bb2c 100644 --- a/desktop/packages/main/package.json +++ b/desktop/packages/main/package.json @@ -13,5 +13,8 @@ "@smartpointer-desktop/eslintrc": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", "@types/sockjs-client": "1.5.1" + }, + "dependencies": { + "@smartpointer-desktop/shared": "1.0.0" } } diff --git a/desktop/packages/main/tsconfig.json b/desktop/packages/main/tsconfig.json index fd510c26..6993bbe1 100644 --- a/desktop/packages/main/tsconfig.json +++ b/desktop/packages/main/tsconfig.json @@ -1,14 +1,22 @@ { "extends": "@smartpointer-desktop/tsconfig/node", - "include": ["src/**/*", "vite.config.ts"], - "exclude": ["src/generated/**/*"], + "include": [ + "src/**/*", + "vite.config.ts", + "@smartpointer-desktop/shared" + ], + "exclude": [ + "src/generated/**/*" + ], "compilerOptions": { "importsNotUsedAsValues": "remove", "exactOptionalPropertyTypes": false, "noImplicitOverride": false, "baseUrl": ".", "paths": { - "@/*": ["*"] + "@/*": [ + "*" + ] } } } diff --git a/desktop/packages/preload/package.json b/desktop/packages/preload/package.json index 27e22ccc..a112827e 100644 --- a/desktop/packages/preload/package.json +++ b/desktop/packages/preload/package.json @@ -12,6 +12,7 @@ "keywords": [], "author": "", "dependencies": { + "@smartpointer-desktop/shared": "1.0.0", "unplugin-auto-expose": "0.0.3" } } diff --git a/desktop/packages/preload/tsconfig.json b/desktop/packages/preload/tsconfig.json index 588e1186..7e20a568 100644 --- a/desktop/packages/preload/tsconfig.json +++ b/desktop/packages/preload/tsconfig.json @@ -1,4 +1,8 @@ { "extends": "@smartpointer-desktop/tsconfig/node", - "include": ["src/**/*", "vite.config.ts"] + "include": [ + "src/**/*", + "vite.config.ts", + "@smartpointer-desktop/shared" + ] } diff --git a/desktop/packages/renderer/package.json b/desktop/packages/renderer/package.json index 6dae2813..fb144f56 100644 --- a/desktop/packages/renderer/package.json +++ b/desktop/packages/renderer/package.json @@ -22,6 +22,7 @@ "@emotion/styled": "11.10.5", "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", + "@smartpointer-desktop/shared": "1.0.0", "framer-motion": "7.6.2", "qrcode": "1.5.1", "react": "18.2.0", diff --git a/desktop/packages/renderer/tsconfig.json b/desktop/packages/renderer/tsconfig.json index d0ae472b..d477d3e8 100644 --- a/desktop/packages/renderer/tsconfig.json +++ b/desktop/packages/renderer/tsconfig.json @@ -3,12 +3,20 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "@/*": ["src/*"], - "#preload": ["../preload/src/index"] + "@/*": [ + "src/*" + ], + "#preload": [ + "../preload/src/index" + ] }, "target": "ESNext", "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], "allowSyntheticDefaultImports": true, "module": "ESNext", "moduleResolution": "Node", @@ -17,7 +25,10 @@ "noEmit": true, "jsx": "react-jsx" }, - "include": ["src"], + "include": [ + "src", + "@smartpointer-desktop/shared" + ], "references": [ { "path": "./tsconfig.node.json" diff --git a/desktop/packages/shared/index.d.ts b/desktop/packages/shared/index.d.ts new file mode 100644 index 00000000..94afdcdd --- /dev/null +++ b/desktop/packages/shared/index.d.ts @@ -0,0 +1 @@ +declare module "@smartpointer-desktop/shared" {} diff --git a/desktop/packages/shared/package.json b/desktop/packages/shared/package.json new file mode 100644 index 00000000..44292657 --- /dev/null +++ b/desktop/packages/shared/package.json @@ -0,0 +1,8 @@ +{ + "name": "@smartpointer-desktop/shared", + "version": "1.0.0", + "description": "", + "dependencies": { + "@tsconfig/strictest": "1.0.2" + } +} diff --git a/desktop/packages/shared/tsconfig.json b/desktop/packages/shared/tsconfig.json new file mode 100644 index 00000000..7a3b0175 --- /dev/null +++ b/desktop/packages/shared/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@tsconfig/strictest/tsconfig.json" +} From 0bc54c9ce4ff5e508cd303e225339a7fbd193d55 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 31 Oct 2022 15:49:01 +0900 Subject: [PATCH 007/189] ignore type error in config --- desktop/packages/preload/vite.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/packages/preload/vite.config.ts b/desktop/packages/preload/vite.config.ts index 589c3839..3d5b36e8 100644 --- a/desktop/packages/preload/vite.config.ts +++ b/desktop/packages/preload/vite.config.ts @@ -1,3 +1,4 @@ +// @ts-expect-error import { preload } from "unplugin-auto-expose"; import { defineConfig } from "vite"; From 55162464fb7ce55c1b8999066c8e06d96e0669b8 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 31 Oct 2022 15:49:20 +0900 Subject: [PATCH 008/189] share pointer coodinate type --- desktop/packages/main/src/AppState.ts | 4 ++-- desktop/packages/main/src/pointer.ts | 4 ++-- desktop/packages/main/src/types.ts | 6 ++---- desktop/packages/preload/src/index.ts | 14 ++++++++------ desktop/packages/renderer/src/overlay/App.tsx | 4 ++-- desktop/packages/renderer/src/overlay/Pointer.tsx | 9 ++++----- desktop/packages/shared/index.d.ts | 7 ++++++- 7 files changed, 26 insertions(+), 22 deletions(-) diff --git a/desktop/packages/main/src/AppState.ts b/desktop/packages/main/src/AppState.ts index 3d5e2bcb..430f88c9 100644 --- a/desktop/packages/main/src/AppState.ts +++ b/desktop/packages/main/src/AppState.ts @@ -1,4 +1,4 @@ -import type { Room, User, Coordinate } from "./types"; +import type { Room, User, PointerCoordinate } from "./types"; type State = | { @@ -17,7 +17,7 @@ type State = name: "CREATED"; room: Room; users: Map; - pointers: Map; + pointers: Map; }; export class AppState { diff --git a/desktop/packages/main/src/pointer.ts b/desktop/packages/main/src/pointer.ts index fcedc847..83eb62fc 100644 --- a/desktop/packages/main/src/pointer.ts +++ b/desktop/packages/main/src/pointer.ts @@ -2,7 +2,7 @@ import { app, BrowserWindow, screen } from "electron"; import { join } from "node:path"; import type { AppState } from "./AppState"; -import type { Coordinate } from "./types"; +import type { PointerCoordinate } from "./types"; import { loadWindow } from "./window"; let overlayWindow: BrowserWindow | null = null; @@ -58,7 +58,7 @@ export const toggleOverlayWindowDevTools = () => { } }; -export const sendPointerPosition = (position: Coordinate) => { +export const sendPointerPosition = (position: PointerCoordinate) => { if (overlayWindow === null) { return; } diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index 32f77e1e..29680586 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -1,3 +1,5 @@ +export { PointerCoordinate } from "@smartpointer-desktop/shared"; + export type Room = { id: string; passcode: string; @@ -6,7 +8,3 @@ export type User = { id: string; name: string; }; -export type Coordinate = { - x: number; - y: number; -}; diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index a3331248..7f34b9a6 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -1,13 +1,15 @@ +import type { PointerCoordinate } from "@smartpointer-desktop/shared"; import { ipcRenderer } from "electron"; -export type Coordinate = { x: number; y: number }; - export const onUpdatePointerPosition = ( - callback: (position: Coordinate) => void + callback: (position: PointerCoordinate) => void ) => { - ipcRenderer.on("update-pointer-position", (_, position: Coordinate) => { - callback(position); - }); + ipcRenderer.on( + "update-pointer-position", + (_, position: PointerCoordinate) => { + callback(position); + } + ); }; export const onHidePointer = (callback: () => void) => { diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index 534e604e..e5cb4331 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -1,16 +1,16 @@ +import type { PointerCoordinate } from "@smartpointer-desktop/shared"; import { useEffect, useState } from "react"; import { Pointer } from "./Pointer"; import { - Coordinate, onHidePointer, onUpdatePointerPosition, // eslint-disable-next-line import/no-unresolved } from "#preload"; export const App = () => { - const [position, setPosition] = useState(null); + const [position, setPosition] = useState(null); const [showingPointer, setShowingPointer] = useState(false); diff --git a/desktop/packages/renderer/src/overlay/Pointer.tsx b/desktop/packages/renderer/src/overlay/Pointer.tsx index 2de1102f..339a6643 100644 --- a/desktop/packages/renderer/src/overlay/Pointer.tsx +++ b/desktop/packages/renderer/src/overlay/Pointer.tsx @@ -1,10 +1,9 @@ import { useWindowSize } from "@react-hook/window-size"; +import type { PointerCoordinate } from "@smartpointer-desktop/shared"; import type { FC } from "react"; -import type { Coordinate } from "./types"; - type Props = { - position: Coordinate; + position: PointerCoordinate; showingPointer: boolean; cnt: number; }; @@ -30,8 +29,8 @@ export const Pointer: FC = ({ position, showingPointer, cnt }) => { M 0 0 h ${width} v ${height} - h ${-width} - v ${-height} + h ${-width} + v ${-height} Z M ${(cnt > 5 ? width / 2 : 0) + position.x * width} ${ diff --git a/desktop/packages/shared/index.d.ts b/desktop/packages/shared/index.d.ts index 94afdcdd..41f2773c 100644 --- a/desktop/packages/shared/index.d.ts +++ b/desktop/packages/shared/index.d.ts @@ -1 +1,6 @@ -declare module "@smartpointer-desktop/shared" {} +declare module "@smartpointer-desktop/shared" { + export type PointerCoordinate = { + x: number; + y: number; + }; +} From 19cb17e8a07032df960e1b6b969054cde15bb671 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Tue, 1 Nov 2022 01:57:58 +0900 Subject: [PATCH 009/189] =?UTF-8?q?fix:=20=E6=AE=8B=E5=83=8F=E3=81=8C?= =?UTF-8?q?=E6=AE=8B=E3=82=8B=E4=B8=8D=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/pointer.ts | 1 + desktop/packages/renderer/src/overlay/App.tsx | 17 +---------------- .../packages/renderer/src/overlay/Pointer.tsx | 12 ++---------- 3 files changed, 4 insertions(+), 26 deletions(-) diff --git a/desktop/packages/main/src/pointer.ts b/desktop/packages/main/src/pointer.ts index 83eb62fc..15badce1 100644 --- a/desktop/packages/main/src/pointer.ts +++ b/desktop/packages/main/src/pointer.ts @@ -23,6 +23,7 @@ export const showOverlayWindow = async (appState: AppState) => { frame: false, transparent: true, focusable: false, + hasShadow: false, webPreferences: { preload: join( app.getAppPath(), diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index e5cb4331..584c3495 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -12,25 +12,12 @@ import { export const App = () => { const [position, setPosition] = useState(null); - const [showingPointer, setShowingPointer] = useState(false); - - const [cnt, setCnt] = useState(0); - useEffect(() => { onUpdatePointerPosition((position) => { setPosition(position); - if (position === null) { - setShowingPointer(false); - setCnt(0); - } else { - setShowingPointer(true); - setCnt((cnt) => cnt + 1); - } }); onHidePointer(() => { - setShowingPointer(false); - setCnt(0); setPosition(null); }); }, []); @@ -41,7 +28,5 @@ export const App = () => { return null; } - return ( - - ); + return ; }; diff --git a/desktop/packages/renderer/src/overlay/Pointer.tsx b/desktop/packages/renderer/src/overlay/Pointer.tsx index 339a6643..055f3a3f 100644 --- a/desktop/packages/renderer/src/overlay/Pointer.tsx +++ b/desktop/packages/renderer/src/overlay/Pointer.tsx @@ -4,17 +4,11 @@ import type { FC } from "react"; type Props = { position: PointerCoordinate; - showingPointer: boolean; - cnt: number; }; -export const Pointer: FC = ({ position, showingPointer, cnt }) => { +export const Pointer: FC = ({ position }) => { const [width, height] = useWindowSize(); const radius = 100; - console.log(showingPointer); - - // FIXME: クロップしたエリアが暗くなる - // TODO: 残像が残るので、初期描画位置を画面外に設定してごまかしてるので修正する return ( = ({ position, showingPointer, cnt }) => { v ${-height} Z - M ${(cnt > 5 ? width / 2 : 0) + position.x * width} ${ - (cnt > 5 ? height / 2 : 0) + position.y * width - } + M ${width / 2 + position.x * width} ${height / 2 + position.y * width} a ${radius} ${radius} 0 1 1 1 0 Z `} From 88c09e92162cf4633ce336417201b3c02a38536d Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 1 Nov 2022 02:27:49 +0900 Subject: [PATCH 010/189] disable import/no-unresolved --- desktop/packages/eslintrc/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/packages/eslintrc/index.js b/desktop/packages/eslintrc/index.js index b30e1570..2964c1f2 100644 --- a/desktop/packages/eslintrc/index.js +++ b/desktop/packages/eslintrc/index.js @@ -30,6 +30,7 @@ module.exports = { }, }, rules: { + "import/no-unresolved": "off", // restrict order of imports "import/order": [ "error", From 5596c0f29f23bb3b6bc8e384df729c7d7eb30a3d Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 1 Nov 2022 02:28:09 +0900 Subject: [PATCH 011/189] =?UTF-8?q?desktop=20=E3=81=AE=E8=A8=AD=E8=A8=88?= =?UTF-8?q?=E3=81=84=E3=81=84=E3=81=8B=E3=82=93=E3=81=98=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/AppState.ts | 52 ----- desktop/packages/main/src/controller/index.ts | 59 ++++++ desktop/packages/main/src/index.ts | 85 +------- desktop/packages/main/src/link.ts | 33 ---- desktop/packages/main/src/menu/template.ts | 78 -------- desktop/packages/main/src/menu/tray.ts | 28 --- desktop/packages/main/src/model/index.ts | 184 ++++++++++++++++++ desktop/packages/main/src/pointer.ts | 74 ------- desktop/packages/main/src/room.ts | 30 --- desktop/packages/main/src/stomp.ts | 82 +++++++- desktop/packages/main/src/types.ts | 29 ++- desktop/packages/main/src/view/index.ts | 11 ++ desktop/packages/main/src/view/tray.ts | 70 +++++++ .../main/src/view/window/inviteLink.ts | 41 ++++ .../{window.ts => view/window/loadFile.ts} | 16 +- .../main/src/view/window/pointerOverlay.ts | 79 ++++++++ desktop/packages/main/tsconfig.json | 5 +- desktop/packages/preload/src/index.ts | 19 +- desktop/packages/renderer/src/overlay/App.tsx | 21 +- .../packages/renderer/src/overlay/Pointer.tsx | 24 ++- desktop/packages/shared/index.d.ts | 6 + 21 files changed, 591 insertions(+), 435 deletions(-) delete mode 100644 desktop/packages/main/src/AppState.ts create mode 100644 desktop/packages/main/src/controller/index.ts delete mode 100644 desktop/packages/main/src/link.ts delete mode 100644 desktop/packages/main/src/menu/template.ts delete mode 100644 desktop/packages/main/src/menu/tray.ts create mode 100644 desktop/packages/main/src/model/index.ts delete mode 100644 desktop/packages/main/src/pointer.ts delete mode 100644 desktop/packages/main/src/room.ts create mode 100644 desktop/packages/main/src/view/index.ts create mode 100644 desktop/packages/main/src/view/tray.ts create mode 100644 desktop/packages/main/src/view/window/inviteLink.ts rename desktop/packages/main/src/{window.ts => view/window/loadFile.ts} (73%) create mode 100644 desktop/packages/main/src/view/window/pointerOverlay.ts diff --git a/desktop/packages/main/src/AppState.ts b/desktop/packages/main/src/AppState.ts deleted file mode 100644 index 430f88c9..00000000 --- a/desktop/packages/main/src/AppState.ts +++ /dev/null @@ -1,52 +0,0 @@ -import type { Room, User, PointerCoordinate } from "./types"; - -type State = - | { - name: "READY"; - room?: undefined; - users?: undefined; - pointers?: undefined; - } - | { - name: "CREATING"; - room?: undefined; - users?: undefined; - pointers?: undefined; - } - | { - name: "CREATED"; - room: Room; - users: Map; - pointers: Map; - }; - -export class AppState { - #state: State = { - name: "READY", - }; - - #subscribeListeners = new Set<(state: Readonly) => void>(); - - get state(): Readonly { - return this.#state; - } - - public setState(state: State | ((state: State) => State)): void { - if (typeof state === "function") { - this.#state = state(this.#state); - } else { - this.#state = state; - } - this.#subscribeListeners.forEach((callback) => callback(this.#state)); - } - - public subscribe(callback: (state: Readonly) => void): void { - this.#subscribeListeners.add(callback); - } - - public unsubscribe(callback: (state: Readonly) => void): void { - this.#subscribeListeners.delete(callback); - } -} - -export default AppState; diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts new file mode 100644 index 00000000..9b624f8d --- /dev/null +++ b/desktop/packages/main/src/controller/index.ts @@ -0,0 +1,59 @@ +import { PointerCoordinate } from "@smartpointer-desktop/shared"; + +import { roomApi } from "@/api"; +import * as model from "@/model"; +import { listenRoomSubscription } from "@/stomp"; +import { User } from "@/types"; + +export const initialize = () => { + model.initialize(); +}; + +export const createRoom = async () => { + model.startCreatingRoom(); + + const { data } = await roomApi.createRoom(); + + model.createdRoom(data); + + listenRoomSubscription(data.roomId); +}; + +export const joinedRoom = (user: User) => { + model.joinedRoom(user); +}; + +export const leftRoom = (user: User) => { + model.leftRoom(user); +}; + +export const pointerUpdated = ( + userId: User["id"], + pointer: PointerCoordinate +) => { + model.updatePointer(userId, pointer); +}; + +export const pointerDeactivated = (userId: User["id"]) => { + model.deactivatePointer(userId); +}; + +export const showInviteLink = () => { + model.showInviteLink(); +}; + +export const hideInviteLink = () => { + model.hideInviteLink(); +}; + +export const closeOverlayWindowDevTools = () => { + model.closeOverlayWindowDevTools(); +}; + +export const openOverlayWindowDevTools = () => { + model.openOverlayWindowDevTools(); +}; + +export const toggleOverlayWindowDevTools = () => { + model.toggleOverlayWindowDevTools(); +}; diff --git a/desktop/packages/main/src/index.ts b/desktop/packages/main/src/index.ts index 5f8b0030..40336410 100644 --- a/desktop/packages/main/src/index.ts +++ b/desktop/packages/main/src/index.ts @@ -1,86 +1,9 @@ import { app } from "electron"; -import { AppState } from "./AppState"; -import { showInviteLinkWindow } from "./link"; -import { createTray } from "./menu/tray"; -import { goNext, goPrevious } from "./pagination"; -import { sendHidePointer, sendPointerPosition } from "./pointer"; -import { createRoom } from "./room"; -import { stompClient } from "./stomp"; - -enum SlideControl { - NEXT, - PREVIOUS, -} - -const tanDeg = (deg: number) => Math.tan((deg * Math.PI) / 180); +import { initialize } from "./controller"; +import { activate } from "./stomp"; app.once("ready", async () => { - const appState = new AppState(); - - stompClient.activate(); - - const handleClickCreateRoom = async () => { - await createRoom(appState); - - if (appState.state.name !== "CREATED") { - throw new Error("ぃやなんしとんねん"); - } - - await showInviteLinkWindow(appState); - - // スライド操作を購読 - stompClient.subscribe( - `/topic/rooms/${appState.state.room.id}/slides/control`, - (message) => { - type Response = { - control: SlideControl; - }; - const body = JSON.parse(message.body) as Response; - if (body.control === SlideControl.NEXT) { - goNext(); - } else { - goPrevious(); - } - } - ); - - // ポインター操作を購読 - stompClient.subscribe( - `/topic/rooms/${appState.state.room.id}/pointer/control`, - (message) => { - type Response = - | { - isActive: true; - rotation: { - alpha: number; - beta: number; - gamma: number; - }; - } - | { - isActive: false; - rotation: null; - }; - const body = JSON.parse(message.body) as Response; - - if (body.isActive) { - sendPointerPosition({ - x: -tanDeg(body.rotation.alpha) / 2, - y: -tanDeg(body.rotation.beta) / 2, - }); - } else { - sendHidePointer(); - } - } - ); - }; - - createTray({ - appState, - handleClickCreateRoom, - handleClickShowInviteLink: () => showInviteLinkWindow(appState), - }); + activate(); + initialize(); }); - -app.once("window-all-closed", () => app.quit()); diff --git a/desktop/packages/main/src/link.ts b/desktop/packages/main/src/link.ts deleted file mode 100644 index 2b98f303..00000000 --- a/desktop/packages/main/src/link.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { BrowserWindow } from "electron"; - -import type { AppState } from "./AppState"; -import { loadWindow } from "./window"; - -let inviteLinkWindow: BrowserWindow | null = null; - -export const showInviteLinkWindow = async (appState: AppState) => { - if (appState.state.name !== "CREATED") { - throw new Error("んなんしとんねん"); - } - - inviteLinkWindow = new BrowserWindow({ - width: 600, - height: 400, - title: "招待リンク - スマートポインター", - show: false, - }); - - await loadWindow(inviteLinkWindow, "link.html", { - roomId: appState.state.room.id, - passcode: appState.state.room.passcode, - }); - - inviteLinkWindow.show(); -}; - -export const toggleInviteLinkWindowDevTools = () => { - if (inviteLinkWindow === null) { - return; - } - inviteLinkWindow.webContents.toggleDevTools(); -}; diff --git a/desktop/packages/main/src/menu/template.ts b/desktop/packages/main/src/menu/template.ts deleted file mode 100644 index 789eb31f..00000000 --- a/desktop/packages/main/src/menu/template.ts +++ /dev/null @@ -1,78 +0,0 @@ -import type { MenuItemConstructorOptions } from "electron"; - -import type { AppState } from "../AppState"; -import { toggleInviteLinkWindowDevTools } from "../link"; -import { toggleOverlayWindowDevTools } from "../pointer"; - -const renderDefaultMenuTemplate = ({ - appState, - handleClickCreateRoom, -}: { - appState: AppState; - handleClickCreateRoom: () => void; -}): MenuItemConstructorOptions[] => [ - { - label: "ルームを作成", - accelerator: "CmdOrCtrl+N", - enabled: appState.state.name !== "CREATING", - click: handleClickCreateRoom, - }, -]; - -const renderCreatedMenuTemplate = ({ - appState, - handleClickShowInviteLink, -}: { - appState: AppState; - handleClickShowInviteLink: () => void; -}): MenuItemConstructorOptions[] => [ - { - label: "参加者一覧", - accelerator: "CmdOrCtrl+L", - // TODO: チェックリストに変更する - submenu: - Array.from(appState.state.users?.values() ?? []).map((user) => ({ - label: user.name, - })) ?? [], - }, - { - label: "招待リンクを表示", - accelerator: "CmdOrCtrl+S", - click: handleClickShowInviteLink, - }, -]; - -export const renderMenuTemplate = ({ - appState, - handleClickCreateRoom, - handleClickShowInviteLink, -}: { - appState: AppState; - handleClickCreateRoom: () => void; - handleClickShowInviteLink: () => void; -}): MenuItemConstructorOptions[] => [ - ...(appState.state.name === "CREATED" - ? renderCreatedMenuTemplate({ appState, handleClickShowInviteLink }) - : renderDefaultMenuTemplate({ appState, handleClickCreateRoom })), - { type: "separator" }, - - { - label: "開発者ツールの表示切り替え", - submenu: [ - { - label: "オーバレイ", - click: toggleOverlayWindowDevTools, - }, - { - label: "招待リンク", - click: toggleInviteLinkWindowDevTools, - }, - ], - }, - { type: "separator" }, - { - role: "quit", - label: "アプリを終了", - accelerator: "Cmd+Q", - }, -]; diff --git a/desktop/packages/main/src/menu/tray.ts b/desktop/packages/main/src/menu/tray.ts deleted file mode 100644 index 60773402..00000000 --- a/desktop/packages/main/src/menu/tray.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Menu, Tray } from "electron"; -import { join } from "path"; - -import { assetsPath } from "../path"; - -import { renderMenuTemplate } from "./template"; - -export const createTray = ({ - appState, - ...menuTemplateParam -}: Parameters[0]) => { - const iconPath = join(assetsPath, "menu-bar-icon.png"); - const tray = new Tray(iconPath); - tray.setToolTip("スマートポインター"); - - const contextMenu = Menu.buildFromTemplate( - renderMenuTemplate({ ...menuTemplateParam, appState }) - ); - tray.setContextMenu(contextMenu); - - appState.subscribe(() => { - tray.setContextMenu( - Menu.buildFromTemplate( - renderMenuTemplate({ ...menuTemplateParam, appState }) - ) - ); - }); -}; diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts new file mode 100644 index 00000000..7c5a0971 --- /dev/null +++ b/desktop/packages/main/src/model/index.ts @@ -0,0 +1,184 @@ +import { PointerCoordinate } from "@smartpointer-desktop/shared"; + +import { view } from "../view"; + +import { Room, State, User } from "@/types"; + +class StateInternal { + #data: State | undefined; + + get data() { + if (!this.#data) { + throw new Error("State is not initialized"); + } + + return this.#data; + } + set data(newState: State) { + if (import.meta.env.DEV) { + console.log("=".repeat(80)); + console.log("State updated"); + console.log(newState); + } + + this.#data = newState; + view(newState); + } +} + +const state = new StateInternal(); + +export const initialize = () => { + state.data = { + status: "READY", + }; +}; + +export const startCreatingRoom = () => { + if (state.data.status !== "READY") { + throw new Error("Cannot start creating room when not in READY state"); + } + + state.data = { + status: "CREATING", + }; +}; + +export const createdRoom = (room: Room) => { + if (state.data.status !== "CREATING") { + throw new Error("Cannot create room when not in CREATING state"); + } + + state.data = { + status: "CREATED", + room, + joinedUsers: new Map(), + activePointers: new Map(), + showInviteLink: true, + showOverlayWindowDevTools: import.meta.env.DEV, + }; +}; + +export const joinedRoom = (user: User) => { + if (state.data.status !== "CREATED") { + throw new Error("Cannot join room when not in CREATED state"); + } + + state.data = { + ...state.data, + joinedUsers: new Map(state.data.joinedUsers).set(user.id, user), + }; +}; + +export const leftRoom = (user: User) => { + if (state.data.status !== "CREATED") { + throw new Error("Cannot leave room when not in CREATED state"); + } + + const joinedUsers = new Map(state.data.joinedUsers); + + joinedUsers.delete(user.id); + + state.data = { + ...state.data, + joinedUsers, + }; +}; + +export const updatePointer = ( + userId: User["id"], + pointer: PointerCoordinate +) => { + if (state.data.status !== "CREATED") { + throw new Error("Cannot update pointer when not in CREATED state"); + } + + state.data = { + ...state.data, + activePointers: new Map(state.data.activePointers).set(userId, pointer), + }; +}; + +export const deactivatePointer = (userId: User["id"]) => { + if (state.data.status !== "CREATED") { + throw new Error("Cannot deactivate pointer when not in CREATED state"); + } + + const activePointers = new Map(state.data.activePointers); + + activePointers.delete(userId); + + state.data = { + ...state.data, + activePointers, + }; +}; + +export const showInviteLink = () => { + if (state.data.status !== "CREATED") { + throw new Error("Cannot show invite link when not in CREATED state"); + } + + if (state.data.showInviteLink) { + return; + } + + state.data = { + ...state.data, + showInviteLink: true, + }; +}; + +export const hideInviteLink = () => { + if (state.data.status !== "CREATED") { + throw new Error("Cannot hide invite link when not in CREATED state"); + } + + if (!state.data.showInviteLink) { + return; + } + + state.data = { + ...state.data, + showInviteLink: false, + }; +}; + +export const closeOverlayWindowDevTools = () => { + if (state.data.status !== "CREATED") { + throw new Error( + "Cannot toggle overlay window dev tools when not in CREATED state" + ); + } + + state.data = { + ...state.data, + showOverlayWindowDevTools: false, + }; +}; + +export const openOverlayWindowDevTools = () => { + if (state.data.status !== "CREATED") { + throw new Error( + "Cannot toggle overlay window dev tools when not in CREATED state" + ); + } + + state.data = { + ...state.data, + showOverlayWindowDevTools: true, + }; +}; + +export const toggleOverlayWindowDevTools = () => { + if (state.data.status !== "CREATED") { + throw new Error( + "Cannot toggle overlay window dev tools when not in CREATED state" + ); + } + + state.data = { + ...state.data, + showOverlayWindowDevTools: !state.data.showOverlayWindowDevTools, + }; +}; diff --git a/desktop/packages/main/src/pointer.ts b/desktop/packages/main/src/pointer.ts deleted file mode 100644 index 15badce1..00000000 --- a/desktop/packages/main/src/pointer.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { app, BrowserWindow, screen } from "electron"; -import { join } from "node:path"; - -import type { AppState } from "./AppState"; -import type { PointerCoordinate } from "./types"; -import { loadWindow } from "./window"; - -let overlayWindow: BrowserWindow | null = null; - -export const showOverlayWindow = async (appState: AppState) => { - if (appState.state.name !== "CREATED") { - throw new Error("なにしとんねん"); - } - - const { width, height } = screen.getPrimaryDisplay().workAreaSize; - - if (overlayWindow === null) { - overlayWindow = new BrowserWindow({ - width, - height, - title: "スマートポインター", - show: false, - frame: false, - transparent: true, - focusable: false, - hasShadow: false, - webPreferences: { - preload: join( - app.getAppPath(), - "packages", - "preload", - "dist", - "index.cjs" - ), - }, - }); - } - overlayWindow.setAlwaysOnTop(true, "screen-saver"); - overlayWindow.setVisibleOnAllWorkspaces(true, { - visibleOnFullScreen: true, - }); - overlayWindow.setIgnoreMouseEvents(true); - - loadWindow(overlayWindow, "overlay.html"); - - overlayWindow.show(); -}; - -export const toggleOverlayWindowDevTools = () => { - if (overlayWindow === null) { - return; - } - if (overlayWindow.webContents.isDevToolsOpened()) { - overlayWindow.webContents.closeDevTools(); - } else { - overlayWindow.webContents.openDevTools({ - mode: "detach", - }); - } -}; - -export const sendPointerPosition = (position: PointerCoordinate) => { - if (overlayWindow === null) { - return; - } - overlayWindow.webContents.send("update-pointer-position", position); -}; - -export const sendHidePointer = () => { - if (overlayWindow === null) { - return; - } - overlayWindow.webContents.send("hide-pointer"); -}; diff --git a/desktop/packages/main/src/room.ts b/desktop/packages/main/src/room.ts deleted file mode 100644 index 727da6e6..00000000 --- a/desktop/packages/main/src/room.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { roomApi } from "./api"; -import type AppState from "./AppState"; -import { showOverlayWindow } from "./pointer"; - -export const createRoom = async (appState: AppState): Promise => { - if (appState.state.name !== "READY") { - throw new Error("なんしとんねん"); - } - - appState.setState({ - name: "CREATING", - }); - - try { - const { - data: { roomId, passcode }, - } = await roomApi.createRoom(); - - appState.setState({ - name: "CREATED", - room: { id: roomId, passcode }, - users: new Map(), - pointers: new Map(), - }); - - await showOverlayWindow(appState); - } catch (e) { - console.error(e); - } -}; diff --git a/desktop/packages/main/src/stomp.ts b/desktop/packages/main/src/stomp.ts index 5c210f0f..3ba3c0a9 100644 --- a/desktop/packages/main/src/stomp.ts +++ b/desktop/packages/main/src/stomp.ts @@ -1,12 +1,88 @@ -import { Client } from "@stomp/stompjs"; +import { Client, StompSubscription } from "@stomp/stompjs"; import SockJS from "sockjs-client"; +import * as controller from "./controller"; +import { goNext, goPrevious } from "./pagination"; + const brokerURL = process.env["USE_DEV_BACKEND"] === "true" ? "http://localhost:8080/ws" : "https://smartpointer.abelab.dev/ws"; -export const stompClient = new Client({ +const stompClient = new Client({ webSocketFactory: () => new SockJS(brokerURL), - // debug: console.log, }); + +enum SlideControl { + NEXT, + PREVIOUS, +} + +const tanDeg = (deg: number) => Math.tan((deg * Math.PI) / 180); + +let slidesControlSubscription: StompSubscription | null = null; +let pointerControlSubscription: StompSubscription | null = null; + +export const activate = () => { + stompClient.activate(); +}; + +export const listenRoomSubscription = (roomId: string) => { + slidesControlSubscription = stompClient.subscribe( + `/topic/rooms/${roomId}/slides/control`, + (message) => { + type Response = { + control: SlideControl; + }; + const body = JSON.parse(message.body) as Response; + if (body.control === SlideControl.NEXT) { + goNext(); + } else { + goPrevious(); + } + } + ); + + // ポインター操作を購読 + pointerControlSubscription = stompClient.subscribe( + `/topic/rooms/${roomId}/pointer/control`, + (message) => { + type Response = + | { + isActive: true; + rotation: { + alpha: number; + beta: number; + gamma: number; + }; + } + | { + isActive: false; + rotation: null; + }; + const body = JSON.parse(message.body) as Response; + + if (body.isActive) { + // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する + controller.pointerUpdated("userId", { + x: -tanDeg(body.rotation.alpha) / 2, + y: -tanDeg(body.rotation.beta) / 2, + }); + } else { + // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する + controller.pointerDeactivated("userId"); + } + } + ); +}; + +export const unsubscribeRoomSubscription = () => { + if (slidesControlSubscription) { + slidesControlSubscription.unsubscribe(); + slidesControlSubscription = null; + } + if (pointerControlSubscription) { + pointerControlSubscription.unsubscribe(); + pointerControlSubscription = null; + } +}; diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index 29680586..f9079a44 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -1,10 +1,29 @@ -export { PointerCoordinate } from "@smartpointer-desktop/shared"; +import { PointerCoordinate } from "@smartpointer-desktop/shared"; + +import { RoomResponse } from "./generated/http-client"; + +export type Room = RoomResponse; -export type Room = { - id: string; - passcode: string; -}; export type User = { id: string; name: string; }; + +export type State = Readonly< + | { + status: "READY" | "CREATING"; + room?: undefined; + joinedUsers?: undefined; + activePointers?: undefined; + showInviteLink?: undefined; + showOverlayWindowDevTools?: undefined; + } + | { + status: "CREATED"; + room: Room; + joinedUsers: Map; + activePointers: Map; + showInviteLink: boolean; + showOverlayWindowDevTools: boolean; + } +>; diff --git a/desktop/packages/main/src/view/index.ts b/desktop/packages/main/src/view/index.ts new file mode 100644 index 00000000..57a0d03e --- /dev/null +++ b/desktop/packages/main/src/view/index.ts @@ -0,0 +1,11 @@ +import { State } from "@/types"; + +import { tray } from "./tray"; +import { renderInviteLinkWindow } from "./window/inviteLink"; +import { renderOverlayWindow } from "./window/pointerOverlay"; + +export const view = (state: State) => { + tray(state); + renderInviteLinkWindow(state); + renderOverlayWindow(state); +}; diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts new file mode 100644 index 00000000..1eb810a8 --- /dev/null +++ b/desktop/packages/main/src/view/tray.ts @@ -0,0 +1,70 @@ +import { Menu, MenuItemConstructorOptions, Tray } from "electron"; +import { join } from "path"; + +import { assetsPath } from "../path"; + +import * as controller from "@/controller"; +import { State } from "@/types"; + +type MenuTemplate = (state: State) => MenuItemConstructorOptions[]; + +const defaultMenuTemplate: MenuTemplate = (state) => [ + { + label: "ルームを作成", + accelerator: "CmdOrCtrl+N", + enabled: state.status !== "CREATING", + click: controller.createRoom, + }, +]; + +const createdRoomMenuTemplate: MenuTemplate = (state) => [ + { + label: "参加者一覧", + accelerator: "CmdOrCtrl+L", + // TODO: チェックリストに変更する + submenu: + Array.from(state.joinedUsers?.values() ?? []).map((user) => ({ + label: user.name, + })) ?? [], + }, + { + label: "招待リンクを表示", + accelerator: "CmdOrCtrl+S", + click: controller.showInviteLink, + }, +]; + +const menuTemplate: MenuTemplate = (state) => [ + ...(state.status === "CREATED" + ? createdRoomMenuTemplate(state) + : defaultMenuTemplate(state)), + { type: "separator" }, + { + role: "quit", + label: "アプリを終了", + accelerator: "Cmd+Q", + }, + ...(import.meta.env.DEV + ? ([ + { type: "separator" }, + { + label: "オーバーレイの開発者ツールを表示", + click: controller.toggleOverlayWindowDevTools, + }, + ] as const) + : []), +]; + +let trayInstance: Tray | null = null; + +export const tray = (state: State) => { + if (trayInstance === null) { + const iconPath = join(assetsPath, "menu-bar-icon.png"); + + trayInstance = new Tray(iconPath); + + trayInstance.setToolTip("スマートポインター"); + } + + trayInstance.setContextMenu(Menu.buildFromTemplate(menuTemplate(state))); +}; diff --git a/desktop/packages/main/src/view/window/inviteLink.ts b/desktop/packages/main/src/view/window/inviteLink.ts new file mode 100644 index 00000000..1f53788e --- /dev/null +++ b/desktop/packages/main/src/view/window/inviteLink.ts @@ -0,0 +1,41 @@ +import { BrowserWindow } from "electron"; + +import { hideInviteLink } from "@/controller"; +import { State } from "@/types"; + +import { loadFile } from "./loadFile"; + +let inviteLinkWindow: BrowserWindow | null = null; + +export const renderInviteLinkWindow = async (state: State) => { + if (state.status !== "CREATED" || !state.showInviteLink) { + if (inviteLinkWindow && !inviteLinkWindow.isDestroyed()) { + inviteLinkWindow.close(); + } + inviteLinkWindow = null; + return; + } + + if (inviteLinkWindow !== null && !inviteLinkWindow.isDestroyed()) { + inviteLinkWindow.focus(); + return; + } + + inviteLinkWindow = new BrowserWindow({ + width: 600, + height: 400, + title: "招待リンク - スマートポインター", + show: false, + }); + + await loadFile(inviteLinkWindow, "link.html", { + roomId: state.room.roomId, + passcode: state.room.passcode, + }); + + inviteLinkWindow.show(); + + inviteLinkWindow.on("closed", () => { + hideInviteLink(); + }); +}; diff --git a/desktop/packages/main/src/window.ts b/desktop/packages/main/src/view/window/loadFile.ts similarity index 73% rename from desktop/packages/main/src/window.ts rename to desktop/packages/main/src/view/window/loadFile.ts index 7df638dd..8a1f7dcd 100644 --- a/desktop/packages/main/src/window.ts +++ b/desktop/packages/main/src/view/window/loadFile.ts @@ -5,7 +5,11 @@ const base = ? import.meta.env.VITE_DEV_SERVER_URL : `file://${app.getAppPath()}/packages/renderer/dist/`; -const getURL = (fileName: string, params?: { [K in string]: string }) => { +export const loadFile = async ( + window: BrowserWindow, + fileName: string, + params?: { [K in string]: string } +) => { const url = new URL(fileName, base); if (params !== undefined) { @@ -14,13 +18,5 @@ const getURL = (fileName: string, params?: { [K in string]: string }) => { }); } - return url.toString(); -}; - -export const loadWindow = async ( - window: BrowserWindow, - fileName: string, - params?: { [K in string]: string } -) => { - await window.loadURL(getURL(fileName, params)); + await window.loadURL(url.toString()); }; diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts new file mode 100644 index 00000000..f2deb6b1 --- /dev/null +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -0,0 +1,79 @@ +import { app, BrowserWindow, screen } from "electron"; +import { join } from "node:path"; + +import * as controller from "@/controller"; +import { State } from "@/types"; + +import { loadFile } from "./loadFile"; + +let overlayWindow: BrowserWindow | null = null; + +export const renderOverlayWindow = async (state: State) => { + if (state.status !== "CREATED") { + if (overlayWindow && !overlayWindow.isDestroyed()) { + overlayWindow.close(); + } + overlayWindow = null; + return; + } + + const { width, height } = screen.getPrimaryDisplay().workAreaSize; + + if (overlayWindow === null || overlayWindow.isDestroyed()) { + overlayWindow = new BrowserWindow({ + width, + height, + title: "スマートポインター", + show: false, + frame: false, + transparent: true, + focusable: false, + hasShadow: false, + webPreferences: { + preload: join( + app.getAppPath(), + "packages", + "preload", + "dist", + "index.cjs" + ), + }, + }); + + overlayWindow.setAlwaysOnTop(true, "screen-saver"); + overlayWindow.setVisibleOnAllWorkspaces(true, { + visibleOnFullScreen: true, + }); + overlayWindow.setIgnoreMouseEvents(true); + + await loadFile(overlayWindow, "overlay.html"); + + overlayWindow.show(); + } + + if (state.showOverlayWindowDevTools) { + if (!overlayWindow.webContents.isDevToolsOpened()) { + overlayWindow.webContents.openDevTools({ + mode: "detach", + }); + + overlayWindow.webContents.on( + "devtools-closed", + controller.closeOverlayWindowDevTools + ); + } + } else { + if (overlayWindow.webContents.isDevToolsOpened()) { + overlayWindow.webContents.closeDevTools(); + } + } + + overlayWindow.webContents.send( + "pointers-updated", + [...state.activePointers.entries()].map(([userId, pointer]) => ({ + userId, + pointer, + name: state.joinedUsers.get(userId)?.name ?? "", + })) + ); +}; diff --git a/desktop/packages/main/tsconfig.json b/desktop/packages/main/tsconfig.json index 6993bbe1..adbae600 100644 --- a/desktop/packages/main/tsconfig.json +++ b/desktop/packages/main/tsconfig.json @@ -3,7 +3,8 @@ "include": [ "src/**/*", "vite.config.ts", - "@smartpointer-desktop/shared" + "@smartpointer-desktop/shared", + "src/view/window/.ts" ], "exclude": [ "src/generated/**/*" @@ -15,7 +16,7 @@ "baseUrl": ".", "paths": { "@/*": [ - "*" + "src/*" ] } } diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index 7f34b9a6..4445bd89 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -1,19 +1,8 @@ -import type { PointerCoordinate } from "@smartpointer-desktop/shared"; +import type { Pointers } from "@smartpointer-desktop/shared"; import { ipcRenderer } from "electron"; -export const onUpdatePointerPosition = ( - callback: (position: PointerCoordinate) => void -) => { - ipcRenderer.on( - "update-pointer-position", - (_, position: PointerCoordinate) => { - callback(position); - } - ); -}; - -export const onHidePointer = (callback: () => void) => { - ipcRenderer.on("hide-pointer", () => { - callback(); +export const onUpdatePointers = (callback: (pointers: Pointers) => void) => { + ipcRenderer.on("pointers-update", (_, pointers: Pointers) => { + callback(pointers); }); }; diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index 584c3495..cd0afa2b 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -1,32 +1,21 @@ -import type { PointerCoordinate } from "@smartpointer-desktop/shared"; +import type { Pointers } from "@smartpointer-desktop/shared"; import { useEffect, useState } from "react"; import { Pointer } from "./Pointer"; import { - onHidePointer, - onUpdatePointerPosition, + onUpdatePointers, // eslint-disable-next-line import/no-unresolved } from "#preload"; export const App = () => { - const [position, setPosition] = useState(null); + const [position, setPosition] = useState([]); useEffect(() => { - onUpdatePointerPosition((position) => { - setPosition(position); - }); - - onHidePointer(() => { - setPosition(null); - }); + onUpdatePointers(setPosition); }, []); console.log(position); - if (position === null) { - return null; - } - - return ; + return ; }; diff --git a/desktop/packages/renderer/src/overlay/Pointer.tsx b/desktop/packages/renderer/src/overlay/Pointer.tsx index 055f3a3f..1e722161 100644 --- a/desktop/packages/renderer/src/overlay/Pointer.tsx +++ b/desktop/packages/renderer/src/overlay/Pointer.tsx @@ -1,14 +1,18 @@ import { useWindowSize } from "@react-hook/window-size"; -import type { PointerCoordinate } from "@smartpointer-desktop/shared"; +import type { Pointers } from "@smartpointer-desktop/shared"; import type { FC } from "react"; type Props = { - position: PointerCoordinate; + pointers: Pointers; }; -export const Pointer: FC = ({ position }) => { +export const Pointer: FC = ({ pointers }) => { const [width, height] = useWindowSize(); const radius = 100; + if (pointers.length === 0) { + return null; + } + return ( = ({ position }) => { h ${-width} v ${-height} Z - - M ${width / 2 + position.x * width} ${height / 2 + position.y * width} - a ${radius} ${radius} 0 1 1 1 0 - Z - `} + ${pointers + .map( + ({ pointer }) => ` + M ${width / 2 + pointer.x * width} ${height / 2 + pointer.y * width} + a ${radius} ${radius} 0 1 1 1 0 + Z + ` + ) + .join("")}`} fill="rgba(0, 0, 0, 0.5)" /> diff --git a/desktop/packages/shared/index.d.ts b/desktop/packages/shared/index.d.ts index 41f2773c..597d7db9 100644 --- a/desktop/packages/shared/index.d.ts +++ b/desktop/packages/shared/index.d.ts @@ -3,4 +3,10 @@ declare module "@smartpointer-desktop/shared" { x: number; y: number; }; + + export type Pointers = { + userId: string; + name: string; + pointer: PointerCoordinate; + }[]; } From 8bdc172fd4fb9fc9184dd7e6edd3505486ff350a Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 1 Nov 2022 14:12:55 +0900 Subject: [PATCH 012/189] do not unnecessary process --- desktop/packages/main/src/view/window/pointerOverlay.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index f2deb6b1..a112e3e2 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -17,9 +17,8 @@ export const renderOverlayWindow = async (state: State) => { return; } - const { width, height } = screen.getPrimaryDisplay().workAreaSize; - if (overlayWindow === null || overlayWindow.isDestroyed()) { + const { width, height } = screen.getPrimaryDisplay().workAreaSize; overlayWindow = new BrowserWindow({ width, height, From fadb915e9082b03e8ca62424db02c58b7c64ff2a Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 1 Nov 2022 14:13:33 +0900 Subject: [PATCH 013/189] remove console.log --- desktop/packages/renderer/src/overlay/App.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index cd0afa2b..40452296 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -15,7 +15,5 @@ export const App = () => { onUpdatePointers(setPosition); }, []); - console.log(position); - return ; }; From e9cec631fcb54e73a876f921506cce61754aa770 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 1 Nov 2022 14:13:49 +0900 Subject: [PATCH 014/189] fix ipc channel name --- desktop/packages/preload/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index 4445bd89..d7c59b38 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -2,7 +2,7 @@ import type { Pointers } from "@smartpointer-desktop/shared"; import { ipcRenderer } from "electron"; export const onUpdatePointers = (callback: (pointers: Pointers) => void) => { - ipcRenderer.on("pointers-update", (_, pointers: Pointers) => { + ipcRenderer.on("pointers-updated", (_, pointers: Pointers) => { callback(pointers); }); }; From fa7b6bb826c06690d16586cee84c5060a6bede2f Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 1 Nov 2022 19:53:00 +0900 Subject: [PATCH 015/189] =?UTF-8?q?=E3=82=B9=E3=83=9D=E3=83=83=E3=83=88?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=88=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF?= =?UTF-8?q?=E3=83=BC=E3=81=AE=E6=8F=8F=E7=94=BB=E3=82=92=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packages/renderer/src/overlay/Pointer.tsx | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/desktop/packages/renderer/src/overlay/Pointer.tsx b/desktop/packages/renderer/src/overlay/Pointer.tsx index 1e722161..e0a9182b 100644 --- a/desktop/packages/renderer/src/overlay/Pointer.tsx +++ b/desktop/packages/renderer/src/overlay/Pointer.tsx @@ -7,7 +7,7 @@ type Props = { }; export const Pointer: FC = ({ pointers }) => { const [width, height] = useWindowSize(); - const radius = 100; + const radiusRate = 0.1; if (pointers.length === 0) { return null; @@ -20,26 +20,27 @@ export const Pointer: FC = ({ pointers }) => { height={height} viewBox={`0 0 ${width} ${height}`} > - ` - M ${width / 2 + pointer.x * width} ${height / 2 + pointer.y * width} - a ${radius} ${radius} 0 1 1 1 0 - Z - ` - ) - .join("")}`} - fill="rgba(0, 0, 0, 0.5)" + + + + {pointers.map(({ pointer, userId }) => ( + + ))} + + + ); From f23a432d318b33420f07a1e2b59fd859832484c3 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Wed, 2 Nov 2022 13:54:20 +0900 Subject: [PATCH 016/189] fix global styles --- desktop/packages/renderer/src/overlay/theme.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/desktop/packages/renderer/src/overlay/theme.ts b/desktop/packages/renderer/src/overlay/theme.ts index 925ad631..0133441c 100644 --- a/desktop/packages/renderer/src/overlay/theme.ts +++ b/desktop/packages/renderer/src/overlay/theme.ts @@ -3,6 +3,11 @@ import { extendTheme } from "@chakra-ui/react"; export const theme = extendTheme({ styles: { global: { + "html, body, #root": { + w: "100vw", + h: "100vh", + overflow: "hidden", + }, body: { bg: "transparent", color: "white", From 93652113e435d6e57320124ae861f195fdec8ae8 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Wed, 2 Nov 2022 13:55:04 +0900 Subject: [PATCH 017/189] add arrow pointer --- .../renderer/src/overlay/ArrowPointer.tsx | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 desktop/packages/renderer/src/overlay/ArrowPointer.tsx diff --git a/desktop/packages/renderer/src/overlay/ArrowPointer.tsx b/desktop/packages/renderer/src/overlay/ArrowPointer.tsx new file mode 100644 index 00000000..64ffc9b5 --- /dev/null +++ b/desktop/packages/renderer/src/overlay/ArrowPointer.tsx @@ -0,0 +1,87 @@ +import { Box, Text, useToken, VStack } from "@chakra-ui/react"; +import { useWindowSize } from "@react-hook/window-size"; +import type { Pointers } from "@smartpointer-desktop/shared"; +import type { FC } from "react"; + +/** + * + * @see https://gist.github.com/0x263b/2bdd90886c2036a1ad5bcf06d6e6fb37 + */ +function randomColorFromList(str: string, list: string[]): string { + let index = 0; + if (str.length === 0) return list[0]!; + for (let i = 0; i < str.length; i += 1) { + index = str.charCodeAt(i) + ((index << 5) - index); + index = index & index; + } + index = ((index % list.length) + list.length) % list.length; + return list[index]!; +} + +export const ArrowPointer: FC<{ pointers: Pointers }> = ({ pointers }) => { + const [width, height] = useWindowSize(); + const colors = useToken("colors", [ + "gray.500", + "red.500", + "orange.500", + "yellow.500", + "green.500", + "teal.500", + "blue.500", + "cyan.500", + "purple.500", + "pink.500", + ]); + + return ( + + {pointers.map(({ pointer, userId, name }) => { + const color = randomColorFromList(userId, colors); + + return ( + + + + + {pointers.length > 1 && ( + + + {name} + + + )} + + ); + })} + + ); +}; From 2f45cdee405110d3863b0550f42d29e3a99f2640 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 00:34:30 +0900 Subject: [PATCH 018/189] add FingerPointer component --- .../renderer/src/overlay/FingerPointer.tsx | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 desktop/packages/renderer/src/overlay/FingerPointer.tsx diff --git a/desktop/packages/renderer/src/overlay/FingerPointer.tsx b/desktop/packages/renderer/src/overlay/FingerPointer.tsx new file mode 100644 index 00000000..6640cecc --- /dev/null +++ b/desktop/packages/renderer/src/overlay/FingerPointer.tsx @@ -0,0 +1,105 @@ +import { Box, Flex, Text, useToken } from "@chakra-ui/react"; +import { useWindowSize } from "@react-hook/window-size"; +import type { Pointers } from "@smartpointer-desktop/shared"; +import type { FC } from "react"; + +/** + * + * @see https://gist.github.com/0x263b/2bdd90886c2036a1ad5bcf06d6e6fb37 + */ +function randomColorFromList(str: string, list: string[]): string { + let index = 0; + if (str.length === 0) return list[0]!; + for (let i = 0; i < str.length; i += 1) { + index = str.charCodeAt(i) + ((index << 5) - index); + index = index & index; + } + index = ((index % list.length) + list.length) % list.length; + return list[index]!; +} + +export const FingerPointer: FC<{ pointers: Pointers }> = () => { + const [width, height] = useWindowSize(); + const colors = useToken("colors", [ + "gray.500", + "red.500", + "orange.500", + "yellow.500", + "green.500", + "teal.500", + "blue.500", + "cyan.500", + "purple.500", + "pink.500", + ]); + + const pointers = [ + { + pointer: { + x: 0, + y: 0, + }, + userId: "0000-0000-0000-0000", + name: "test", + }, + { + pointer: { + x: 0.05, + y: 0.05, + }, + userId: "1111-1111-1111-1111", + name: "test2", + }, + ]; + + return ( + + {pointers.map(({ pointer, userId, name }) => { + const color = randomColorFromList(userId, colors); + + return ( + + + + + + {pointers.length > 1 && ( + + {name} + + )} + + ); + })} + + ); +}; From e736c65a899ff287364eea2063d0556fcf7f308f Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 01:01:36 +0900 Subject: [PATCH 019/189] =?UTF-8?q?SockJS=20=E5=89=A5=E3=81=8C=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/config/WebSocketConfig.java | 3 +- app/src/main/pointer/package.json | 5 +- app/src/main/pointer/src/sockjs-client.d.ts | 3 - app/src/main/pointer/src/stomp.ts | 5 +- app/src/main/pointer/yarn.lock | 62 +---- .../controller/AbstractController_IT.groovy | 4 +- desktop/package-lock.json | 262 ++++-------------- desktop/package.json | 2 +- desktop/packages/main/package.json | 2 +- desktop/packages/main/src/stomp.ts | 10 +- 10 files changed, 71 insertions(+), 287 deletions(-) delete mode 100644 app/src/main/pointer/src/sockjs-client.d.ts diff --git a/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java index ab503538..4961dc69 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java @@ -26,8 +26,7 @@ public void registerStompEndpoints(final StompEndpointRegistry registry) { registry.addEndpoint("/ws") // // ハッカソンなので、全てのオリジンを許可してもOKとする .setAllowedOriginPatterns("*") // - .setHandshakeHandler(new StompHandshakeHandler()) // - .withSockJS(); + .setHandshakeHandler(new StompHandshakeHandler()); } } diff --git a/app/src/main/pointer/package.json b/app/src/main/pointer/package.json index 24fe34a5..29b6d66c 100644 --- a/app/src/main/pointer/package.json +++ b/app/src/main/pointer/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "scripts": { - "dev": "vite", + "dev": "vite --host", "build": "tsc && vite build", "preview": "vite preview", "codegen": "openapi-generator-cli generate -g typescript-axios -i http://localhost:8080/v3/api-docs/Public%20API -o ./src/generated/http-client", @@ -25,8 +25,7 @@ "framer-motion": "7.5.3", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-hook-form": "^7.38.0", - "sockjs-client": "^1.6.1" + "react-hook-form": "^7.38.0" }, "devDependencies": { "@openapitools/openapi-generator-cli": "^2.5.2", diff --git a/app/src/main/pointer/src/sockjs-client.d.ts b/app/src/main/pointer/src/sockjs-client.d.ts deleted file mode 100644 index 099c38db..00000000 --- a/app/src/main/pointer/src/sockjs-client.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "sockjs-client/dist/sockjs" { - export default (await import("sockjs-client")).default; -} diff --git a/app/src/main/pointer/src/stomp.ts b/app/src/main/pointer/src/stomp.ts index ad973241..a1062d03 100644 --- a/app/src/main/pointer/src/stomp.ts +++ b/app/src/main/pointer/src/stomp.ts @@ -1,6 +1,7 @@ import { Client } from "@stomp/stompjs"; -import SockJS from "sockjs-client/dist/sockjs"; + +const brokerURL = `wss://${location.host}/ws`; export const stompClient = new Client({ - webSocketFactory: () => new SockJS(`/ws`), + brokerURL, }); diff --git a/app/src/main/pointer/yarn.lock b/app/src/main/pointer/yarn.lock index e2ae4b82..8037f395 100644 --- a/app/src/main/pointer/yarn.lock +++ b/app/src/main/pointer/yarn.lock @@ -2612,11 +2612,6 @@ events@^3.3.0: resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -eventsource@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-2.0.2.tgz#76dfcc02930fb2ff339520b6d290da573a9e8508" - integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA== - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" @@ -2664,13 +2659,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -faye-websocket@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - figures@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" @@ -3016,11 +3004,6 @@ hosted-git-info@^2.1.4: resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -3908,11 +3891,6 @@ punycode@^2.1.0: resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" @@ -4054,11 +4032,6 @@ require-directory@^2.1.1: resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" @@ -4142,7 +4115,7 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-buffer@>=5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4243,17 +4216,6 @@ slash@^4.0.0: resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -sockjs-client@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.6.1.tgz#350b8eda42d6d52ddc030c39943364c11dcad806" - integrity sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw== - dependencies: - debug "^3.2.7" - eventsource "^2.0.2" - faye-websocket "^0.11.4" - inherits "^2.0.4" - url-parse "^1.5.10" - source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" @@ -4616,14 +4578,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-parse@^1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - use-callback-ref@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz" @@ -4719,20 +4673,6 @@ webidl-conversions@^3.0.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy index 29cf461c..9d62ebe6 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy @@ -23,8 +23,6 @@ import org.springframework.util.MultiValueMap import org.springframework.web.context.WebApplicationContext import org.springframework.web.socket.client.standard.StandardWebSocketClient import org.springframework.web.socket.messaging.WebSocketStompClient -import org.springframework.web.socket.sockjs.client.SockJsClient -import org.springframework.web.socket.sockjs.client.WebSocketTransport import spock.lang.Shared import java.util.concurrent.TimeUnit @@ -231,7 +229,7 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { })) .build() - this.stompClient = new WebSocketStompClient(new SockJsClient(List.of(new WebSocketTransport(new StandardWebSocketClient())))) + this.stompClient = new WebSocketStompClient(new StandardWebSocketClient()) this.stompClient.setMessageConverter(new MappingJackson2MessageConverter()) } diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 14a9eb65..9704cf7d 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -15,7 +15,7 @@ "@nut-tree/nut-js": "2.3.0", "@stomp/stompjs": "6.1.2", "axios": "1.1.3", - "sockjs-client": "1.6.1" + "ws": "8.10.0" }, "devDependencies": { "@smartpointer-desktop/eslintrc": "1.0.0", @@ -3124,8 +3124,7 @@ "node_modules/@tsconfig/strictest": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-1.0.2.tgz", - "integrity": "sha512-IRKlC8cnP7zMz1SDBjyIVyPapkEGWLZ6wkF6Z8T+xU80P9sO5uGXlIUvtzjx+7ehPJRWxkB6CeIDwUfyqNtYkQ==", - "dev": true + "integrity": "sha512-IRKlC8cnP7zMz1SDBjyIVyPapkEGWLZ6wkF6Z8T+xU80P9sO5uGXlIUvtzjx+7ehPJRWxkB6CeIDwUfyqNtYkQ==" }, "node_modules/@types/debug": { "version": "4.1.7", @@ -3263,12 +3262,6 @@ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, - "node_modules/@types/sockjs-client": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/sockjs-client/-/sockjs-client-1.5.1.tgz", - "integrity": "sha512-bmZM6A1GPdjF0bcuIUC+50hZEMGkzMsiG9by6X9U+7IZFOiPtz7MJ9h05FSpPVxlj4i+TzzoG3ESo1FJlbLb6A==", - "dev": true - }, "node_modules/@types/verror": { "version": "1.10.6", "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", @@ -3276,6 +3269,15 @@ "dev": true, "optional": true }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", @@ -6809,14 +6811,6 @@ "node": ">=0.10.0" } }, - "node_modules/eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -7043,17 +7037,6 @@ "reusify": "^1.0.4" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -7855,11 +7838,6 @@ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -10100,11 +10078,6 @@ "node": ">=0.6" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -10438,11 +10411,6 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -10794,32 +10762,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/sockjs-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", - "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", - "dependencies": { - "debug": "^3.2.7", - "eventsource": "^2.0.2", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://tidelift.com/funding/github/npm/sockjs-client" - } - }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11641,15 +11583,6 @@ "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", "integrity": "sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==" }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -11835,27 +11768,6 @@ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz", "integrity": "sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg==" }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -11944,6 +11856,26 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/ws": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", + "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xhr": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", @@ -12103,7 +12035,7 @@ "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", - "@types/sockjs-client": "1.5.1" + "@types/ws": "8.5.3" } }, "packages/preload": { @@ -12147,17 +12079,8 @@ "packages/shared": { "name": "@smartpointer-desktop/shared", "version": "1.0.0", - "devDependencies": { - "@tsconfig/node16-strictest-esm": "1.0.3", - "@typescript-eslint/eslint-plugin": "5.41.0", - "@typescript-eslint/parser": "5.41.0", - "eslint": "8.26.0", - "eslint-config-prettier": "8.5.0", - "eslint-import-resolver-typescript": "3.5.2", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-jsx-a11y": "6.6.1", - "eslint-plugin-react": "7.31.10", - "eslint-plugin-react-hooks": "4.6.0" + "dependencies": { + "@tsconfig/strictest": "1.0.2" } }, "packages/tsconfig": { @@ -14420,16 +14343,16 @@ "requires": { "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/shared": "*", + "@smartpointer-desktop/shared": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", - "@types/sockjs-client": "1.5.1" + "@types/ws": "*" } }, "@smartpointer-desktop/preload": { "version": "file:packages/preload", "requires": { "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/shared": "*", + "@smartpointer-desktop/shared": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", "unplugin-auto-expose": "0.0.3" } @@ -14443,7 +14366,7 @@ "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/shared": "*", + "@smartpointer-desktop/shared": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", "@tsconfig/strictest": "1.0.2", "@types/qrcode": "1.5.0", @@ -14460,16 +14383,7 @@ "@smartpointer-desktop/shared": { "version": "file:packages/shared", "requires": { - "@tsconfig/node16-strictest-esm": "1.0.3", - "@typescript-eslint/eslint-plugin": "5.41.0", - "@typescript-eslint/parser": "5.41.0", - "eslint": "8.26.0", - "eslint-config-prettier": "8.5.0", - "eslint-import-resolver-typescript": "3.5.2", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-jsx-a11y": "6.6.1", - "eslint-plugin-react": "7.31.10", - "eslint-plugin-react-hooks": "4.6.0" + "@tsconfig/strictest": "1.0.2" } }, "@smartpointer-desktop/tsconfig": { @@ -14533,8 +14447,7 @@ "@tsconfig/strictest": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-1.0.2.tgz", - "integrity": "sha512-IRKlC8cnP7zMz1SDBjyIVyPapkEGWLZ6wkF6Z8T+xU80P9sO5uGXlIUvtzjx+7ehPJRWxkB6CeIDwUfyqNtYkQ==", - "dev": true + "integrity": "sha512-IRKlC8cnP7zMz1SDBjyIVyPapkEGWLZ6wkF6Z8T+xU80P9sO5uGXlIUvtzjx+7ehPJRWxkB6CeIDwUfyqNtYkQ==" }, "@types/debug": { "version": "4.1.7", @@ -14672,12 +14585,6 @@ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, - "@types/sockjs-client": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/sockjs-client/-/sockjs-client-1.5.1.tgz", - "integrity": "sha512-bmZM6A1GPdjF0bcuIUC+50hZEMGkzMsiG9by6X9U+7IZFOiPtz7MJ9h05FSpPVxlj4i+TzzoG3ESo1FJlbLb6A==", - "dev": true - }, "@types/verror": { "version": "1.10.6", "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", @@ -14685,6 +14592,15 @@ "dev": true, "optional": true }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/yargs": { "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", @@ -17279,11 +17195,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" - }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -17466,14 +17377,6 @@ "reusify": "^1.0.4" } }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -18087,11 +17990,6 @@ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - }, "http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -19780,11 +19678,6 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -20014,11 +19907,6 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -20270,28 +20158,6 @@ "dev": true, "optional": true }, - "sockjs-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", - "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", - "requires": { - "debug": "^3.2.7", - "eventsource": "^2.0.2", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -20920,15 +20786,6 @@ "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", "integrity": "sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==" }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -21045,21 +20902,6 @@ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz", "integrity": "sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg==" }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -21124,6 +20966,12 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "ws": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", + "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", + "requires": {} + }, "xhr": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", diff --git a/desktop/package.json b/desktop/package.json index 1461e556..ac5c0f23 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -23,7 +23,7 @@ "@nut-tree/nut-js": "2.3.0", "@stomp/stompjs": "6.1.2", "axios": "1.1.3", - "sockjs-client": "1.6.1" + "ws": "8.10.0" }, "devDependencies": { "@smartpointer-desktop/eslintrc": "1.0.0", diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json index f316bb2c..99d9579e 100644 --- a/desktop/packages/main/package.json +++ b/desktop/packages/main/package.json @@ -12,7 +12,7 @@ "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.0.0", "@smartpointer-desktop/tsconfig": "1.0.0", - "@types/sockjs-client": "1.5.1" + "@types/ws": "8.5.3" }, "dependencies": { "@smartpointer-desktop/shared": "1.0.0" diff --git a/desktop/packages/main/src/stomp.ts b/desktop/packages/main/src/stomp.ts index 3ba3c0a9..0aa5d87c 100644 --- a/desktop/packages/main/src/stomp.ts +++ b/desktop/packages/main/src/stomp.ts @@ -1,16 +1,18 @@ import { Client, StompSubscription } from "@stomp/stompjs"; -import SockJS from "sockjs-client"; +import WebSocket from "ws"; import * as controller from "./controller"; import { goNext, goPrevious } from "./pagination"; +Object.assign(global, { WebSocket }); + const brokerURL = process.env["USE_DEV_BACKEND"] === "true" - ? "http://localhost:8080/ws" - : "https://smartpointer.abelab.dev/ws"; + ? "ws://localhost:8080/ws" + : "wss://smartpointer.abelab.dev/ws"; const stompClient = new Client({ - webSocketFactory: () => new SockJS(brokerURL), + brokerURL, }); enum SlideControl { From 9d0d20ff36dae7c2a26c38632181f8326556f9b2 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 01:52:57 +0900 Subject: [PATCH 020/189] remove code using test --- .../renderer/src/overlay/FingerPointer.tsx | 27 +++---------------- 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/desktop/packages/renderer/src/overlay/FingerPointer.tsx b/desktop/packages/renderer/src/overlay/FingerPointer.tsx index 6640cecc..31c8b324 100644 --- a/desktop/packages/renderer/src/overlay/FingerPointer.tsx +++ b/desktop/packages/renderer/src/overlay/FingerPointer.tsx @@ -9,16 +9,18 @@ import type { FC } from "react"; */ function randomColorFromList(str: string, list: string[]): string { let index = 0; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion if (str.length === 0) return list[0]!; for (let i = 0; i < str.length; i += 1) { index = str.charCodeAt(i) + ((index << 5) - index); index = index & index; } index = ((index % list.length) + list.length) % list.length; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return list[index]!; } -export const FingerPointer: FC<{ pointers: Pointers }> = () => { +export const FingerPointer: FC<{ pointers: Pointers }> = ({ pointers }) => { const [width, height] = useWindowSize(); const colors = useToken("colors", [ "gray.500", @@ -33,25 +35,6 @@ export const FingerPointer: FC<{ pointers: Pointers }> = () => { "pink.500", ]); - const pointers = [ - { - pointer: { - x: 0, - y: 0, - }, - userId: "0000-0000-0000-0000", - name: "test", - }, - { - pointer: { - x: 0.05, - y: 0.05, - }, - userId: "1111-1111-1111-1111", - name: "test2", - }, - ]; - return ( {pointers.map(({ pointer, userId, name }) => { @@ -83,10 +66,6 @@ export const FingerPointer: FC<{ pointers: Pointers }> = () => { }} xmlns="http://www.w3.org/2000/svg" > - Date: Thu, 3 Nov 2022 16:32:10 +0900 Subject: [PATCH 021/189] wait for connection when activate stomp client --- .../pointer/src/components/JoinRoomForm.tsx | 4 +++ app/src/main/pointer/src/main.tsx | 3 -- app/src/main/pointer/src/stomp.ts | 22 +++++++++++++ desktop/packages/main/src/stomp.ts | 32 ++++++++++++++++--- 4 files changed, 54 insertions(+), 7 deletions(-) diff --git a/app/src/main/pointer/src/components/JoinRoomForm.tsx b/app/src/main/pointer/src/components/JoinRoomForm.tsx index 13de8cab..8065d61f 100644 --- a/app/src/main/pointer/src/components/JoinRoomForm.tsx +++ b/app/src/main/pointer/src/components/JoinRoomForm.tsx @@ -16,6 +16,7 @@ import { FC } from "react"; import { Controller, useForm } from "react-hook-form"; import { roomApi } from "@/api"; +import { activate } from "@/stomp"; import { AuthData } from "@/types/AuthData"; type Props = { @@ -54,6 +55,9 @@ export const JoinRoomForm: FC = ({ onSubmit: onSubmitProps }) => { passcode: values.passcode, name: values.userName, }); + + await activate(); + localStorage.setItem(localStorageKey, values.userName); onSubmitProps({ ...data, diff --git a/app/src/main/pointer/src/main.tsx b/app/src/main/pointer/src/main.tsx index 0626e7a2..5bea7100 100644 --- a/app/src/main/pointer/src/main.tsx +++ b/app/src/main/pointer/src/main.tsx @@ -3,11 +3,8 @@ import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; import { App } from "./App"; -import { stompClient } from "./stomp"; import { theme } from "./theme"; -stompClient.activate(); - // HTML で定義されているので disable // eslint-disable-next-line @typescript-eslint/no-non-null-assertion createRoot(document.getElementById("root")!).render( diff --git a/app/src/main/pointer/src/stomp.ts b/app/src/main/pointer/src/stomp.ts index a1062d03..49374ea3 100644 --- a/app/src/main/pointer/src/stomp.ts +++ b/app/src/main/pointer/src/stomp.ts @@ -5,3 +5,25 @@ const brokerURL = `wss://${location.host}/ws`; export const stompClient = new Client({ brokerURL, }); + +export const activate = () => + new Promise((resolve, reject) => { + if (stompClient.connected) { + resolve(undefined); + } else { + stompClient.onConnect = (frame) => { + console.log("Connected to broker:", frame); + resolve(undefined); + }; + + stompClient.onStompError = (frame) => { + console.error("Broker reported error:"); + console.error(frame.headers["message"]); + console.error("Additional details:"); + console.error(frame.body); + reject(new Error(`STOMP error:\n${frame.headers["message"]}`)); + }; + } + + stompClient.activate(); + }); diff --git a/desktop/packages/main/src/stomp.ts b/desktop/packages/main/src/stomp.ts index 0aa5d87c..f626e33f 100644 --- a/desktop/packages/main/src/stomp.ts +++ b/desktop/packages/main/src/stomp.ts @@ -25,11 +25,35 @@ const tanDeg = (deg: number) => Math.tan((deg * Math.PI) / 180); let slidesControlSubscription: StompSubscription | null = null; let pointerControlSubscription: StompSubscription | null = null; -export const activate = () => { - stompClient.activate(); -}; +const activate = () => + new Promise((resolve, reject) => { + if (stompClient.connected) { + resolve(undefined); + } else { + stompClient.onConnect = (frame) => { + console.log("Connected to broker:", frame); + resolve(undefined); + }; + + stompClient.onStompError = (frame) => { + console.error("Broker reported error:"); + console.error(frame.headers["message"]); + console.error("Additional details:"); + console.error(frame.body); + reject(new Error(`STOMP error:\n${frame.headers["message"]}`)); + }; + } + + stompClient.activate(); + }); + +export const listenRoomSubscription = async (roomId: string) => { + console.log(`[STOMP] Connecting to ${brokerURL}...`); + + await activate(); + + console.log("[STOMP] Connected."); -export const listenRoomSubscription = (roomId: string) => { slidesControlSubscription = stompClient.subscribe( `/topic/rooms/${roomId}/slides/control`, (message) => { From 2709482498e91437ecbfc50c80e58684db9ef6b1 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 16:41:25 +0900 Subject: [PATCH 022/189] remove unused code --- desktop/packages/main/src/index.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/desktop/packages/main/src/index.ts b/desktop/packages/main/src/index.ts index 40336410..79a516b8 100644 --- a/desktop/packages/main/src/index.ts +++ b/desktop/packages/main/src/index.ts @@ -1,9 +1,12 @@ import { app } from "electron"; import { initialize } from "./controller"; -import { activate } from "./stomp"; app.once("ready", async () => { - activate(); initialize(); }); + +app.on("window-all-closed", () => { + // prevent the app from quitting when all windows are closed + // the app will quit when the user clicks the tray menu +}); From 7e9e4616527ecc94c63f41904db3dd9a186dbb18 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 16:53:43 +0900 Subject: [PATCH 023/189] fix desktop stomp client activating --- desktop/packages/main/src/controller/index.ts | 4 +- desktop/packages/main/src/stomp.ts | 37 +++++++++---------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 9b624f8d..d3330b39 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -2,7 +2,7 @@ import { PointerCoordinate } from "@smartpointer-desktop/shared"; import { roomApi } from "@/api"; import * as model from "@/model"; -import { listenRoomSubscription } from "@/stomp"; +import { activate, listenRoomSubscription } from "@/stomp"; import { User } from "@/types"; export const initialize = () => { @@ -14,6 +14,8 @@ export const createRoom = async () => { const { data } = await roomApi.createRoom(); + await activate(); + model.createdRoom(data); listenRoomSubscription(data.roomId); diff --git a/desktop/packages/main/src/stomp.ts b/desktop/packages/main/src/stomp.ts index f626e33f..d4302a9f 100644 --- a/desktop/packages/main/src/stomp.ts +++ b/desktop/packages/main/src/stomp.ts @@ -25,35 +25,32 @@ const tanDeg = (deg: number) => Math.tan((deg * Math.PI) / 180); let slidesControlSubscription: StompSubscription | null = null; let pointerControlSubscription: StompSubscription | null = null; -const activate = () => +export const activate = () => new Promise((resolve, reject) => { if (stompClient.connected) { resolve(undefined); - } else { - stompClient.onConnect = (frame) => { - console.log("Connected to broker:", frame); - resolve(undefined); - }; - - stompClient.onStompError = (frame) => { - console.error("Broker reported error:"); - console.error(frame.headers["message"]); - console.error("Additional details:"); - console.error(frame.body); - reject(new Error(`STOMP error:\n${frame.headers["message"]}`)); - }; + console.log("[STOMP] already connected"); + return; } + console.log(`[STOMP] Connecting to ${brokerURL}...`); + + stompClient.onConnect = (frame) => { + console.log("[STOMP] Connected to broker:", frame); + resolve(undefined); + }; + + stompClient.onStompError = (frame) => { + console.error("[STOMP] Broker reported error:"); + console.error(frame.headers["message"]); + console.error("Additional details:"); + console.error(frame.body); + reject(new Error(`STOMP error:\n${frame.headers["message"]}`)); + }; stompClient.activate(); }); export const listenRoomSubscription = async (roomId: string) => { - console.log(`[STOMP] Connecting to ${brokerURL}...`); - - await activate(); - - console.log("[STOMP] Connected."); - slidesControlSubscription = stompClient.subscribe( `/topic/rooms/${roomId}/slides/control`, (message) => { From 2dd550b363f24a3aed791833841e752356a825f0 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 17:58:13 +0900 Subject: [PATCH 024/189] add debugging code in pointer --- app/src/main/pointer/src/stomp.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/pointer/src/stomp.ts b/app/src/main/pointer/src/stomp.ts index 49374ea3..7c2813ea 100644 --- a/app/src/main/pointer/src/stomp.ts +++ b/app/src/main/pointer/src/stomp.ts @@ -4,6 +4,7 @@ const brokerURL = `wss://${location.host}/ws`; export const stompClient = new Client({ brokerURL, + debug: console.log, }); export const activate = () => From 11e468bc38d7ee8ddaacbef851b04d5927fa9831 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 20:28:56 +0900 Subject: [PATCH 025/189] =?UTF-8?q?show=20`=E3=82=AA=E3=83=BC=E3=83=90?= =?UTF-8?q?=E3=83=BC=E3=83=AC=E3=82=A4=E3=81=AE=E9=96=8B=E7=99=BA=E8=80=85?= =?UTF-8?q?=E3=83=84=E3=83=BC=E3=83=AB=E3=82=92=E8=A1=A8=E7=A4=BA`=20menu?= =?UTF-8?q?=20when=20CREATED=20state?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/view/tray.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index 1eb810a8..da52668d 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -44,7 +44,7 @@ const menuTemplate: MenuTemplate = (state) => [ label: "アプリを終了", accelerator: "Cmd+Q", }, - ...(import.meta.env.DEV + ...(import.meta.env.DEV && state.status === "CREATED" ? ([ { type: "separator" }, { From ac55bf752230cbddab0d3c51f75e3c75ad1af3d9 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 20:51:49 +0900 Subject: [PATCH 026/189] control views in controller --- desktop/packages/main/src/controller/index.ts | 32 ++-- desktop/packages/main/src/model/index.ts | 141 ++++-------------- desktop/packages/main/src/types.ts | 4 - desktop/packages/main/src/view/index.ts | 11 -- desktop/packages/main/src/view/tray.ts | 5 +- .../main/src/view/window/inviteLink.ts | 46 +++--- .../main/src/view/window/pointerOverlay.ts | 104 ++++++------- 7 files changed, 119 insertions(+), 224 deletions(-) delete mode 100644 desktop/packages/main/src/view/index.ts diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index d3330b39..6c4d1fd2 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -4,9 +4,17 @@ import { roomApi } from "@/api"; import * as model from "@/model"; import { activate, listenRoomSubscription } from "@/stomp"; import { User } from "@/types"; +import { updateTray } from "@/view/tray"; +import { showInviteLinkWindow } from "@/view/window/inviteLink"; +import { + showOverlayWindow, + updatePointerInOverlayWindow, +} from "@/view/window/pointerOverlay"; export const initialize = () => { model.initialize(); + + updateTray(); }; export const createRoom = async () => { @@ -19,6 +27,10 @@ export const createRoom = async () => { model.createdRoom(data); listenRoomSubscription(data.roomId); + + updateTray(); + showInviteLink(); + showOverlayWindow(); }; export const joinedRoom = (user: User) => { @@ -34,28 +46,20 @@ export const pointerUpdated = ( pointer: PointerCoordinate ) => { model.updatePointer(userId, pointer); + + updatePointerInOverlayWindow(); }; export const pointerDeactivated = (userId: User["id"]) => { model.deactivatePointer(userId); -}; - -export const showInviteLink = () => { - model.showInviteLink(); -}; -export const hideInviteLink = () => { - model.hideInviteLink(); + updatePointerInOverlayWindow(); }; -export const closeOverlayWindowDevTools = () => { - model.closeOverlayWindowDevTools(); -}; - -export const openOverlayWindowDevTools = () => { - model.openOverlayWindowDevTools(); +export const showInviteLink = () => { + showInviteLinkWindow(); }; export const toggleOverlayWindowDevTools = () => { - model.toggleOverlayWindowDevTools(); + toggleOverlayWindowDevTools(); }; diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 7c5a0971..61aec8b6 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -1,86 +1,64 @@ import { PointerCoordinate } from "@smartpointer-desktop/shared"; -import { view } from "../view"; - import { Room, State, User } from "@/types"; -class StateInternal { - #data: State | undefined; - - get data() { - if (!this.#data) { - throw new Error("State is not initialized"); - } - - return this.#data; - } - set data(newState: State) { - if (import.meta.env.DEV) { - console.log("=".repeat(80)); - console.log("State updated"); - console.log(newState); - } - - this.#data = newState; - view(newState); - } -} +let state: State = { + status: "READY", +}; -const state = new StateInternal(); +export const getState = (): State => state; export const initialize = () => { - state.data = { + state = { status: "READY", }; }; export const startCreatingRoom = () => { - if (state.data.status !== "READY") { + if (state.status !== "READY") { throw new Error("Cannot start creating room when not in READY state"); } - state.data = { + state = { status: "CREATING", }; }; export const createdRoom = (room: Room) => { - if (state.data.status !== "CREATING") { + if (state.status !== "CREATING") { throw new Error("Cannot create room when not in CREATING state"); } - state.data = { + state = { status: "CREATED", room, joinedUsers: new Map(), activePointers: new Map(), - showInviteLink: true, - showOverlayWindowDevTools: import.meta.env.DEV, }; }; export const joinedRoom = (user: User) => { - if (state.data.status !== "CREATED") { + if (state.status !== "CREATED") { throw new Error("Cannot join room when not in CREATED state"); } - state.data = { - ...state.data, - joinedUsers: new Map(state.data.joinedUsers).set(user.id, user), + state = { + ...state, + joinedUsers: new Map(state.joinedUsers).set(user.id, user), }; }; export const leftRoom = (user: User) => { - if (state.data.status !== "CREATED") { + if (state.status !== "CREATED") { throw new Error("Cannot leave room when not in CREATED state"); } - const joinedUsers = new Map(state.data.joinedUsers); + const joinedUsers = new Map(state.joinedUsers); joinedUsers.delete(user.id); - state.data = { - ...state.data, + state = { + ...state, joinedUsers, }; }; @@ -89,96 +67,27 @@ export const updatePointer = ( userId: User["id"], pointer: PointerCoordinate ) => { - if (state.data.status !== "CREATED") { + if (state.status !== "CREATED") { throw new Error("Cannot update pointer when not in CREATED state"); } - state.data = { - ...state.data, - activePointers: new Map(state.data.activePointers).set(userId, pointer), + state = { + ...state, + activePointers: new Map(state.activePointers).set(userId, pointer), }; }; export const deactivatePointer = (userId: User["id"]) => { - if (state.data.status !== "CREATED") { + if (state.status !== "CREATED") { throw new Error("Cannot deactivate pointer when not in CREATED state"); } - const activePointers = new Map(state.data.activePointers); + const activePointers = new Map(state.activePointers); activePointers.delete(userId); - state.data = { - ...state.data, + state = { + ...state, activePointers, }; }; - -export const showInviteLink = () => { - if (state.data.status !== "CREATED") { - throw new Error("Cannot show invite link when not in CREATED state"); - } - - if (state.data.showInviteLink) { - return; - } - - state.data = { - ...state.data, - showInviteLink: true, - }; -}; - -export const hideInviteLink = () => { - if (state.data.status !== "CREATED") { - throw new Error("Cannot hide invite link when not in CREATED state"); - } - - if (!state.data.showInviteLink) { - return; - } - - state.data = { - ...state.data, - showInviteLink: false, - }; -}; - -export const closeOverlayWindowDevTools = () => { - if (state.data.status !== "CREATED") { - throw new Error( - "Cannot toggle overlay window dev tools when not in CREATED state" - ); - } - - state.data = { - ...state.data, - showOverlayWindowDevTools: false, - }; -}; - -export const openOverlayWindowDevTools = () => { - if (state.data.status !== "CREATED") { - throw new Error( - "Cannot toggle overlay window dev tools when not in CREATED state" - ); - } - - state.data = { - ...state.data, - showOverlayWindowDevTools: true, - }; -}; - -export const toggleOverlayWindowDevTools = () => { - if (state.data.status !== "CREATED") { - throw new Error( - "Cannot toggle overlay window dev tools when not in CREATED state" - ); - } - - state.data = { - ...state.data, - showOverlayWindowDevTools: !state.data.showOverlayWindowDevTools, - }; -}; diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index f9079a44..8bf5fca1 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -15,15 +15,11 @@ export type State = Readonly< room?: undefined; joinedUsers?: undefined; activePointers?: undefined; - showInviteLink?: undefined; - showOverlayWindowDevTools?: undefined; } | { status: "CREATED"; room: Room; joinedUsers: Map; activePointers: Map; - showInviteLink: boolean; - showOverlayWindowDevTools: boolean; } >; diff --git a/desktop/packages/main/src/view/index.ts b/desktop/packages/main/src/view/index.ts deleted file mode 100644 index 57a0d03e..00000000 --- a/desktop/packages/main/src/view/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { State } from "@/types"; - -import { tray } from "./tray"; -import { renderInviteLinkWindow } from "./window/inviteLink"; -import { renderOverlayWindow } from "./window/pointerOverlay"; - -export const view = (state: State) => { - tray(state); - renderInviteLinkWindow(state); - renderOverlayWindow(state); -}; diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index da52668d..125010f9 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -4,6 +4,7 @@ import { join } from "path"; import { assetsPath } from "../path"; import * as controller from "@/controller"; +import { getState } from "@/model"; import { State } from "@/types"; type MenuTemplate = (state: State) => MenuItemConstructorOptions[]; @@ -57,7 +58,9 @@ const menuTemplate: MenuTemplate = (state) => [ let trayInstance: Tray | null = null; -export const tray = (state: State) => { +export const updateTray = () => { + const state = getState(); + if (trayInstance === null) { const iconPath = join(assetsPath, "menu-bar-icon.png"); diff --git a/desktop/packages/main/src/view/window/inviteLink.ts b/desktop/packages/main/src/view/window/inviteLink.ts index 1f53788e..0206beca 100644 --- a/desktop/packages/main/src/view/window/inviteLink.ts +++ b/desktop/packages/main/src/view/window/inviteLink.ts @@ -1,41 +1,31 @@ import { BrowserWindow } from "electron"; -import { hideInviteLink } from "@/controller"; -import { State } from "@/types"; +import { getState } from "@/model"; import { loadFile } from "./loadFile"; let inviteLinkWindow: BrowserWindow | null = null; -export const renderInviteLinkWindow = async (state: State) => { - if (state.status !== "CREATED" || !state.showInviteLink) { - if (inviteLinkWindow && !inviteLinkWindow.isDestroyed()) { - inviteLinkWindow.close(); - } - inviteLinkWindow = null; - return; - } +export const showInviteLinkWindow = async () => { + const state = getState(); - if (inviteLinkWindow !== null && !inviteLinkWindow.isDestroyed()) { - inviteLinkWindow.focus(); - return; + if (state.status !== "CREATED") { + throw new Error("Cannot show invite link window when not in CREATED state"); } - inviteLinkWindow = new BrowserWindow({ - width: 600, - height: 400, - title: "招待リンク - スマートポインター", - show: false, - }); - - await loadFile(inviteLinkWindow, "link.html", { - roomId: state.room.roomId, - passcode: state.room.passcode, - }); + if (inviteLinkWindow === null || inviteLinkWindow.isDestroyed()) { + inviteLinkWindow = new BrowserWindow({ + width: 600, + height: 400, + title: "招待リンク - スマートポインター", + show: false, + }); + + await loadFile(inviteLinkWindow, "link.html", { + roomId: state.room.roomId, + passcode: state.room.passcode, + }); + } inviteLinkWindow.show(); - - inviteLinkWindow.on("closed", () => { - hideInviteLink(); - }); }; diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index a112e3e2..49539c39 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -1,70 +1,74 @@ import { app, BrowserWindow, screen } from "electron"; import { join } from "node:path"; -import * as controller from "@/controller"; -import { State } from "@/types"; +import { getState } from "@/model"; import { loadFile } from "./loadFile"; let overlayWindow: BrowserWindow | null = null; -export const renderOverlayWindow = async (state: State) => { +export const showOverlayWindow = async () => { + const state = getState(); + if (state.status !== "CREATED") { - if (overlayWindow && !overlayWindow.isDestroyed()) { - overlayWindow.close(); - } - overlayWindow = null; - return; + throw new Error("Cannot show overlay window when not in CREATED state"); } + const { width, height } = screen.getPrimaryDisplay().workAreaSize; + overlayWindow = new BrowserWindow({ + width, + height, + title: "スマートポインター", + show: false, + frame: false, + transparent: true, + focusable: false, + hasShadow: false, + webPreferences: { + preload: join( + app.getAppPath(), + "packages", + "preload", + "dist", + "index.cjs" + ), + }, + }); + + overlayWindow.setAlwaysOnTop(true, "screen-saver"); + overlayWindow.setVisibleOnAllWorkspaces(true, { + visibleOnFullScreen: true, + }); + overlayWindow.setIgnoreMouseEvents(true); + + await loadFile(overlayWindow, "overlay.html"); + + overlayWindow.show(); +}; + +export const toggleOverlayWindowDevTools = () => { if (overlayWindow === null || overlayWindow.isDestroyed()) { - const { width, height } = screen.getPrimaryDisplay().workAreaSize; - overlayWindow = new BrowserWindow({ - width, - height, - title: "スマートポインター", - show: false, - frame: false, - transparent: true, - focusable: false, - hasShadow: false, - webPreferences: { - preload: join( - app.getAppPath(), - "packages", - "preload", - "dist", - "index.cjs" - ), - }, - }); + return; + } - overlayWindow.setAlwaysOnTop(true, "screen-saver"); - overlayWindow.setVisibleOnAllWorkspaces(true, { - visibleOnFullScreen: true, + if (overlayWindow.webContents.isDevToolsOpened()) { + overlayWindow.webContents.openDevTools({ + mode: "detach", }); - overlayWindow.setIgnoreMouseEvents(true); + } else { + overlayWindow.webContents.closeDevTools(); + } +}; - await loadFile(overlayWindow, "overlay.html"); +export const updatePointerInOverlayWindow = () => { + const state = getState(); - overlayWindow.show(); + if (state.status !== "CREATED") { + throw new Error("Cannot update pointer when not in CREATED state"); } - if (state.showOverlayWindowDevTools) { - if (!overlayWindow.webContents.isDevToolsOpened()) { - overlayWindow.webContents.openDevTools({ - mode: "detach", - }); - - overlayWindow.webContents.on( - "devtools-closed", - controller.closeOverlayWindowDevTools - ); - } - } else { - if (overlayWindow.webContents.isDevToolsOpened()) { - overlayWindow.webContents.closeDevTools(); - } + if (overlayWindow === null || overlayWindow.isDestroyed()) { + return; } overlayWindow.webContents.send( @@ -72,7 +76,7 @@ export const renderOverlayWindow = async (state: State) => { [...state.activePointers.entries()].map(([userId, pointer]) => ({ userId, pointer, - name: state.joinedUsers.get(userId)?.name ?? "", + name: "test", })) ); }; From 3c8591bf4d020e97d81b76b0ccd3979de92b686b Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 21:19:08 +0900 Subject: [PATCH 027/189] fix check:type script --- desktop/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/package.json b/desktop/package.json index ac5c0f23..d20f42ca 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -13,7 +13,7 @@ "lint": "eslint . --ext .ts,.tsx,mts", "format": "yarn check:format --write", "check:format": "prettier . --check", - "check:type": "tsc", + "check:type": "npx --ws tsc", "code-check": "run-p lint check:*", "postinstall": "npm run generate-electron-vendors", "compile": "cross-env MODE=production npm run build && electron-builder build --config .electron-builder.config.js --dir --config.asar=false", From 7a248930b81c02326211b2d32a4095bc8a69a031 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 3 Nov 2022 21:19:43 +0900 Subject: [PATCH 028/189] fix pointer data --- desktop/packages/main/src/controller/index.ts | 14 +++++------- desktop/packages/main/src/model/index.ts | 18 +++++++-------- desktop/packages/main/src/stomp.ts | 22 +++++++++++++------ desktop/packages/main/src/types.ts | 10 ++++----- .../main/src/view/window/pointerOverlay.ts | 20 +++++++++++------ desktop/packages/preload/src/index.ts | 10 +++++---- desktop/packages/renderer/src/overlay/App.tsx | 8 +++---- .../renderer/src/overlay/ArrowPointer.tsx | 18 ++++++++------- .../renderer/src/overlay/FingerPointer.tsx | 18 ++++++++------- .../packages/renderer/src/overlay/Pointer.tsx | 12 +++++----- desktop/packages/shared/index.d.ts | 16 +++++++++++--- 11 files changed, 96 insertions(+), 70 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 6c4d1fd2..e00574aa 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -1,9 +1,8 @@ -import { PointerCoordinate } from "@smartpointer-desktop/shared"; +import { PointerOrientation, User } from "@smartpointer-desktop/shared"; import { roomApi } from "@/api"; import * as model from "@/model"; import { activate, listenRoomSubscription } from "@/stomp"; -import { User } from "@/types"; import { updateTray } from "@/view/tray"; import { showInviteLinkWindow } from "@/view/window/inviteLink"; import { @@ -41,17 +40,14 @@ export const leftRoom = (user: User) => { model.leftRoom(user); }; -export const pointerUpdated = ( - userId: User["id"], - pointer: PointerCoordinate -) => { - model.updatePointer(userId, pointer); +export const pointerUpdated = (user: User, orientation: PointerOrientation) => { + model.updatePointer(user, orientation); updatePointerInOverlayWindow(); }; -export const pointerDeactivated = (userId: User["id"]) => { - model.deactivatePointer(userId); +export const pointerDeactivated = (user: User) => { + model.deactivatePointer(user); updatePointerInOverlayWindow(); }; diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 61aec8b6..b1f9eea0 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -1,6 +1,6 @@ -import { PointerCoordinate } from "@smartpointer-desktop/shared"; +import { PointerOrientation, User } from "@smartpointer-desktop/shared"; -import { Room, State, User } from "@/types"; +import { Room, State } from "@/types"; let state: State = { status: "READY", @@ -63,28 +63,28 @@ export const leftRoom = (user: User) => { }; }; -export const updatePointer = ( - userId: User["id"], - pointer: PointerCoordinate -) => { +export const updatePointer = (user: User, orientation: PointerOrientation) => { if (state.status !== "CREATED") { throw new Error("Cannot update pointer when not in CREATED state"); } state = { ...state, - activePointers: new Map(state.activePointers).set(userId, pointer), + activePointers: new Map(state.activePointers).set(user.id, { + orientation, + user, + }), }; }; -export const deactivatePointer = (userId: User["id"]) => { +export const deactivatePointer = (user: User) => { if (state.status !== "CREATED") { throw new Error("Cannot deactivate pointer when not in CREATED state"); } const activePointers = new Map(state.activePointers); - activePointers.delete(userId); + activePointers.delete(user.id); state = { ...state, diff --git a/desktop/packages/main/src/stomp.ts b/desktop/packages/main/src/stomp.ts index d4302a9f..ab8ee4b9 100644 --- a/desktop/packages/main/src/stomp.ts +++ b/desktop/packages/main/src/stomp.ts @@ -20,8 +20,6 @@ enum SlideControl { PREVIOUS, } -const tanDeg = (deg: number) => Math.tan((deg * Math.PI) / 180); - let slidesControlSubscription: StompSubscription | null = null; let pointerControlSubscription: StompSubscription | null = null; @@ -87,13 +85,23 @@ export const listenRoomSubscription = async (roomId: string) => { if (body.isActive) { // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する - controller.pointerUpdated("userId", { - x: -tanDeg(body.rotation.alpha) / 2, - y: -tanDeg(body.rotation.beta) / 2, - }); + controller.pointerUpdated( + { + id: "user-id", + name: "user-name", + }, + { + alpha: body.rotation.alpha, + beta: body.rotation.beta, + gamma: body.rotation.gamma, + } + ); } else { // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する - controller.pointerDeactivated("userId"); + controller.pointerDeactivated({ + id: "user-id", + name: "user-name", + }); } } ); diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index 8bf5fca1..4cd1b147 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -1,12 +1,12 @@ -import { PointerCoordinate } from "@smartpointer-desktop/shared"; +import { PointerOrientation, User } from "@smartpointer-desktop/shared"; import { RoomResponse } from "./generated/http-client"; export type Room = RoomResponse; -export type User = { - id: string; - name: string; +export type ActivePointer = { + user: User; + orientation: PointerOrientation; }; export type State = Readonly< @@ -20,6 +20,6 @@ export type State = Readonly< status: "CREATED"; room: Room; joinedUsers: Map; - activePointers: Map; + activePointers: Map; } >; diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 49539c39..9caf3aa9 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -1,3 +1,4 @@ +import { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import { app, BrowserWindow, screen } from "electron"; import { join } from "node:path"; @@ -7,6 +8,8 @@ import { loadFile } from "./loadFile"; let overlayWindow: BrowserWindow | null = null; +const tanDeg = (deg: number) => Math.tan((deg * Math.PI) / 180); + export const showOverlayWindow = async () => { const state = getState(); @@ -71,12 +74,15 @@ export const updatePointerInOverlayWindow = () => { return; } - overlayWindow.webContents.send( - "pointers-updated", - [...state.activePointers.entries()].map(([userId, pointer]) => ({ - userId, - pointer, - name: "test", - })) + const message: UpdatePointersMessage = [...state.activePointers.values()].map( + ({ user, orientation }) => ({ + user, + coordinate: { + x: -tanDeg(orientation.alpha) / 2, + y: -tanDeg(orientation.beta) / 2, + }, + }) ); + + overlayWindow.webContents.send("pointers-updated", message); }; diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index d7c59b38..b1c0233e 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -1,8 +1,10 @@ -import type { Pointers } from "@smartpointer-desktop/shared"; +import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import { ipcRenderer } from "electron"; -export const onUpdatePointers = (callback: (pointers: Pointers) => void) => { - ipcRenderer.on("pointers-updated", (_, pointers: Pointers) => { - callback(pointers); +export const onUpdatePointers = ( + callback: (message: UpdatePointersMessage) => void +) => { + ipcRenderer.on("pointers-updated", (_, message: UpdatePointersMessage) => { + callback(message); }); }; diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index 40452296..7eed3ad0 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -1,4 +1,4 @@ -import type { Pointers } from "@smartpointer-desktop/shared"; +import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import { useEffect, useState } from "react"; import { Pointer } from "./Pointer"; @@ -9,11 +9,11 @@ import { } from "#preload"; export const App = () => { - const [position, setPosition] = useState([]); + const [pointers, setPointers] = useState([]); useEffect(() => { - onUpdatePointers(setPosition); + onUpdatePointers(setPointers); }, []); - return ; + return ; }; diff --git a/desktop/packages/renderer/src/overlay/ArrowPointer.tsx b/desktop/packages/renderer/src/overlay/ArrowPointer.tsx index 64ffc9b5..bbf5ebd8 100644 --- a/desktop/packages/renderer/src/overlay/ArrowPointer.tsx +++ b/desktop/packages/renderer/src/overlay/ArrowPointer.tsx @@ -1,6 +1,6 @@ import { Box, Text, useToken, VStack } from "@chakra-ui/react"; import { useWindowSize } from "@react-hook/window-size"; -import type { Pointers } from "@smartpointer-desktop/shared"; +import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import type { FC } from "react"; /** @@ -18,7 +18,9 @@ function randomColorFromList(str: string, list: string[]): string { return list[index]!; } -export const ArrowPointer: FC<{ pointers: Pointers }> = ({ pointers }) => { +export const ArrowPointer: FC<{ pointers: UpdatePointersMessage }> = ({ + pointers, +}) => { const [width, height] = useWindowSize(); const colors = useToken("colors", [ "gray.500", @@ -35,12 +37,12 @@ export const ArrowPointer: FC<{ pointers: Pointers }> = ({ pointers }) => { return ( - {pointers.map(({ pointer, userId, name }) => { - const color = randomColorFromList(userId, colors); + {pointers.map(({ user, coordinate }) => { + const color = randomColorFromList(user.id, colors); return ( = ({ pointers }) => { align="start" gap="0" transform={`translate( - ${width / 2 + pointer.x * width}px, - ${height / 2 + pointer.y * height}px + ${width / 2 + coordinate.x * width}px, + ${height / 2 + coordinate.y * height}px )`} > = ({ pointers }) => { {pointers.length > 1 && ( - {name} + {user.name} )} diff --git a/desktop/packages/renderer/src/overlay/FingerPointer.tsx b/desktop/packages/renderer/src/overlay/FingerPointer.tsx index 31c8b324..befa1f94 100644 --- a/desktop/packages/renderer/src/overlay/FingerPointer.tsx +++ b/desktop/packages/renderer/src/overlay/FingerPointer.tsx @@ -1,6 +1,6 @@ import { Box, Flex, Text, useToken } from "@chakra-ui/react"; import { useWindowSize } from "@react-hook/window-size"; -import type { Pointers } from "@smartpointer-desktop/shared"; +import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import type { FC } from "react"; /** @@ -20,7 +20,9 @@ function randomColorFromList(str: string, list: string[]): string { return list[index]!; } -export const FingerPointer: FC<{ pointers: Pointers }> = ({ pointers }) => { +export const FingerPointer: FC<{ pointers: UpdatePointersMessage }> = ({ + pointers, +}) => { const [width, height] = useWindowSize(); const colors = useToken("colors", [ "gray.500", @@ -37,12 +39,12 @@ export const FingerPointer: FC<{ pointers: Pointers }> = ({ pointers }) => { return ( - {pointers.map(({ pointer, userId, name }) => { - const color = randomColorFromList(userId, colors); + {pointers.map(({ user, coordinate }) => { + const color = randomColorFromList(user.id, colors); return ( = ({ pointers }) => { align="center" gap="4" transform={`translate( - ${width / 2 + pointer.x * width}px, - ${height / 2 + pointer.y * height}px + ${width / 2 + coordinate.x * width}px, + ${height / 2 + coordinate.y * height}px )`} > = ({ pointers }) => { {pointers.length > 1 && ( - {name} + {user.name} )} diff --git a/desktop/packages/renderer/src/overlay/Pointer.tsx b/desktop/packages/renderer/src/overlay/Pointer.tsx index e0a9182b..74a36dcf 100644 --- a/desktop/packages/renderer/src/overlay/Pointer.tsx +++ b/desktop/packages/renderer/src/overlay/Pointer.tsx @@ -1,9 +1,9 @@ import { useWindowSize } from "@react-hook/window-size"; -import type { Pointers } from "@smartpointer-desktop/shared"; +import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import type { FC } from "react"; type Props = { - pointers: Pointers; + pointers: UpdatePointersMessage; }; export const Pointer: FC = ({ pointers }) => { const [width, height] = useWindowSize(); @@ -23,11 +23,11 @@ export const Pointer: FC = ({ pointers }) => { - {pointers.map(({ pointer, userId }) => ( + {pointers.map(({ coordinate, user }) => ( diff --git a/desktop/packages/shared/index.d.ts b/desktop/packages/shared/index.d.ts index 597d7db9..2ca96dac 100644 --- a/desktop/packages/shared/index.d.ts +++ b/desktop/packages/shared/index.d.ts @@ -4,9 +4,19 @@ declare module "@smartpointer-desktop/shared" { y: number; }; - export type Pointers = { - userId: string; + export type PointerOrientation = { + alpha: number; + beta: number; + gamma: number; + }; + + export type User = { + id: string; name: string; - pointer: PointerCoordinate; + }; + + export type UpdatePointersMessage = { + user: User; + coordinate: PointerCoordinate; }[]; } From b67457bed9ad8a45424e48175114b4427748d163 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 5 Nov 2022 16:49:05 +0900 Subject: [PATCH 029/189] =?UTF-8?q?=E3=80=8C=E3=83=AB=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E3=82=92=E7=B5=82=E4=BA=86=E3=80=8D=E3=83=A1=E3=83=8B=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/controller/index.ts | 20 +++++++++++++++++-- desktop/packages/main/src/model/index.ts | 10 ++++++++++ desktop/packages/main/src/view/tray.ts | 6 ++++++ .../main/src/view/window/inviteLink.ts | 4 ++++ .../main/src/view/window/pointerOverlay.ts | 4 ++++ 5 files changed, 42 insertions(+), 2 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index e00574aa..f2eb3129 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -2,10 +2,18 @@ import { PointerOrientation, User } from "@smartpointer-desktop/shared"; import { roomApi } from "@/api"; import * as model from "@/model"; -import { activate, listenRoomSubscription } from "@/stomp"; +import { + activate, + listenRoomSubscription, + unsubscribeRoomSubscription, +} from "@/stomp"; import { updateTray } from "@/view/tray"; -import { showInviteLinkWindow } from "@/view/window/inviteLink"; import { + closeInviteLinkWindow, + showInviteLinkWindow, +} from "@/view/window/inviteLink"; +import { + closeOverlayWindow, showOverlayWindow, updatePointerInOverlayWindow, } from "@/view/window/pointerOverlay"; @@ -40,6 +48,14 @@ export const leftRoom = (user: User) => { model.leftRoom(user); }; +export const closeRoom = () => { + closeOverlayWindow(); + closeInviteLinkWindow(); + unsubscribeRoomSubscription(); + + model.closeRoom(); +}; + export const pointerUpdated = (user: User, orientation: PointerOrientation) => { model.updatePointer(user, orientation); diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index b1f9eea0..2aa88dab 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -37,6 +37,16 @@ export const createdRoom = (room: Room) => { }; }; +export const closeRoom = () => { + if (state.status !== "CREATED") { + throw new Error("Cannot close room when not in CREATED state"); + } + + state = { + status: "READY", + }; +}; + export const joinedRoom = (user: User) => { if (state.status !== "CREATED") { throw new Error("Cannot join room when not in CREATED state"); diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index 125010f9..cbad8cc9 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -33,6 +33,12 @@ const createdRoomMenuTemplate: MenuTemplate = (state) => [ accelerator: "CmdOrCtrl+S", click: controller.showInviteLink, }, + { type: "separator" }, + { + label: "ルームを終了", + accelerator: "CmdOrCtrl+W", + click: controller.closeRoom, + }, ]; const menuTemplate: MenuTemplate = (state) => [ diff --git a/desktop/packages/main/src/view/window/inviteLink.ts b/desktop/packages/main/src/view/window/inviteLink.ts index 0206beca..0a47d162 100644 --- a/desktop/packages/main/src/view/window/inviteLink.ts +++ b/desktop/packages/main/src/view/window/inviteLink.ts @@ -29,3 +29,7 @@ export const showInviteLinkWindow = async () => { inviteLinkWindow.show(); }; + +export const closeInviteLinkWindow = () => { + inviteLinkWindow?.close(); +}; diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 9caf3aa9..c8b97a50 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -86,3 +86,7 @@ export const updatePointerInOverlayWindow = () => { overlayWindow.webContents.send("pointers-updated", message); }; + +export const closeOverlayWindow = () => { + overlayWindow?.close(); +}; From a5141fab4475b67000a69f8a047fd1d07085fef8 Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 5 Nov 2022 17:23:48 +0900 Subject: [PATCH 030/189] =?UTF-8?q?[chore]=20=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=82=921.1.0=5FSNAPSHOT=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- README.md | 2 +- app/src/main/pointer/README.md | 2 +- app/src/main/pointer/package.json | 2 +- app/src/main/resources/application.yml | 2 +- asyncapi.yml | 2 +- desktop/README.md | 2 +- desktop/package-lock.json | 54 +++++++++++++------------- desktop/package.json | 2 +- desktop/packages/eslintrc/package.json | 2 +- desktop/packages/main/package.json | 8 ++-- desktop/packages/preload/package.json | 8 ++-- desktop/packages/renderer/package.json | 8 ++-- desktop/packages/shared/package.json | 2 +- desktop/packages/tsconfig/package.json | 2 +- 15 files changed, 50 insertions(+), 50 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 90ae1602..fffff089 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -42,7 +42,7 @@ pipeline { stage("deploy") { steps { sh "docker-compose up -d" - sh "docker run --rm -d -v $PWD/app/build/libs:/app -p ${PORT}:8080 openjdk:11-jdk java -jar -Dspring.profiles.active=${ENVIRONMENT} app/smartpointer_1.0.0_SNAPSHOT.jar" + sh "docker run --rm -d -v $PWD/app/build/libs:/app -p ${PORT}:8080 openjdk:11-jdk java -jar -Dspring.profiles.active=${ENVIRONMENT} app/smartpointer_1.1.0_SNAPSHOT.jar" } } } diff --git a/README.md b/README.md index 7546df69..489f44e2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![CI](https://github.com/jphacks/D_2208/workflows/CI/badge.svg) ![deploy](https://github.com/jphacks/D_2208/workflows/deploy/badge.svg) -![version](https://img.shields.io/badge/version-1.0.0-blue.svg) +![version](https://img.shields.io/badge/version-1.1.0__SNAPSHOT-blue.svg) [![IMAGE ALT TEXT HERE](https://jphacks.com/wp-content/uploads/2022/08/JPHACKS2022_ogp.jpg)](https://youtu.be/6NNR210ilGI) diff --git a/app/src/main/pointer/README.md b/app/src/main/pointer/README.md index a3991818..a75f2903 100644 --- a/app/src/main/pointer/README.md +++ b/app/src/main/pointer/README.md @@ -1,6 +1,6 @@ # リモコン用 アプリケーション -![version](https://img.shields.io/badge/version-1.0.0-blue.svg) +![version](https://img.shields.io/badge/version-1.1.0__SNAPSHOT-blue.svg) ## 概要 diff --git a/app/src/main/pointer/package.json b/app/src/main/pointer/package.json index 29b6d66c..ec40fb57 100644 --- a/app/src/main/pointer/package.json +++ b/app/src/main/pointer/package.json @@ -1,6 +1,6 @@ { "name": "pointer", - "version": "1.0.0", + "version": "1.1.0-SNAPSHOT", "private": true, "scripts": { "dev": "vite --host", diff --git a/app/src/main/resources/application.yml b/app/src/main/resources/application.yml index 68309607..c0a21fbf 100644 --- a/app/src/main/resources/application.yml +++ b/app/src/main/resources/application.yml @@ -42,7 +42,7 @@ server: project: name: smartpointer - version: 1.0.0 + version: 1.1.0_SNAPSHOT package: dev.abelab.smartpointer mybatis: config: diff --git a/asyncapi.yml b/asyncapi.yml index 030fd030..71682339 100644 --- a/asyncapi.yml +++ b/asyncapi.yml @@ -2,7 +2,7 @@ asyncapi: 2.5.0 info: title: Smart Pointer Internal API - version: 1.0.0 + version: 1.1.0_SNAPSHOT servers: local: diff --git a/desktop/README.md b/desktop/README.md index 0d13264d..c9575261 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -1,6 +1,6 @@ # ホスト PC 用 デスクトップアプリケーション -![version](https://img.shields.io/badge/version-1.0.0-blue.svg) +![version](https://img.shields.io/badge/version-1.1.0__SNAPSHOT-blue.svg) ## 概要 diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 9704cf7d..cf454c2d 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "smartpointer", - "version": "1.0.0", + "version": "1.1.0-SNAPSHOT", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "smartpointer", - "version": "1.0.0", + "version": "1.1.0-SNAPSHOT", "hasInstallScript": true, "workspaces": [ "packages/*" @@ -12012,7 +12012,7 @@ }, "packages/eslintrc": { "name": "@smartpointer-desktop/eslintrc", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "devDependencies": { "@typescript-eslint/eslint-plugin": "5.41.0", "@typescript-eslint/parser": "5.41.0", @@ -12027,39 +12027,39 @@ }, "packages/main": { "name": "@smartpointer-desktop/main", - "version": "1.0.0", + "version": "1.1.0-SNAPSHOT", "dependencies": { - "@smartpointer-desktop/shared": "1.0.0" + "@smartpointer-desktop/shared": "1.1.0-NAPSHOT" }, "devDependencies": { "@openapitools/openapi-generator-cli": "2.5.2", - "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/tsconfig": "1.0.0", + "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", "@types/ws": "8.5.3" } }, "packages/preload": { "name": "@smartpointer-desktop/preload", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "dependencies": { - "@smartpointer-desktop/shared": "1.0.0", + "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", "unplugin-auto-expose": "0.0.3" }, "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/tsconfig": "1.0.0" + "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT" } }, "packages/renderer": { "name": "@smartpointer-desktop/renderer", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "dependencies": { "@chakra-ui/react": "2.3.6", "@emotion/react": "11.10.5", "@emotion/styled": "11.10.5", "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", - "@smartpointer-desktop/shared": "1.0.0", + "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", "framer-motion": "7.6.2", "qrcode": "1.5.1", "react": "18.2.0", @@ -12067,8 +12067,8 @@ "unplugin-auto-expose": "0.0.3" }, "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/tsconfig": "1.0.0", + "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", "@tsconfig/strictest": "1.0.2", "@types/qrcode": "1.5.0", "@types/react": "18.0.24", @@ -12078,14 +12078,14 @@ }, "packages/shared": { "name": "@smartpointer-desktop/shared", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "dependencies": { "@tsconfig/strictest": "1.0.2" } }, "packages/tsconfig": { "name": "@smartpointer-desktop/tsconfig", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "devDependencies": { "@tsconfig/node16-strictest-esm": "1.0.3", "@typescript-eslint/eslint-plugin": "5.41.0", @@ -14342,18 +14342,18 @@ "version": "file:packages/main", "requires": { "@openapitools/openapi-generator-cli": "2.5.2", - "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/shared": "1.0.0", - "@smartpointer-desktop/tsconfig": "1.0.0", - "@types/ws": "*" + "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", + "@types/ws": "8.5.3" } }, "@smartpointer-desktop/preload": { "version": "file:packages/preload", "requires": { - "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/shared": "1.0.0", - "@smartpointer-desktop/tsconfig": "1.0.0", + "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", "unplugin-auto-expose": "0.0.3" } }, @@ -14365,9 +14365,9 @@ "@emotion/styled": "11.10.5", "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", - "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/shared": "1.0.0", - "@smartpointer-desktop/tsconfig": "1.0.0", + "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", "@tsconfig/strictest": "1.0.2", "@types/qrcode": "1.5.0", "@types/react": "18.0.24", diff --git a/desktop/package.json b/desktop/package.json index ac5c0f23..e8af5bba 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "1.0.0", + "version": "1.1.0-SNAPSHOT", "main": "packages/main/dist/index.cjs", "name": "smartpointer", "productName": "smartpointer", diff --git a/desktop/packages/eslintrc/package.json b/desktop/packages/eslintrc/package.json index 1319e5b7..392e60fc 100644 --- a/desktop/packages/eslintrc/package.json +++ b/desktop/packages/eslintrc/package.json @@ -1,6 +1,6 @@ { "name": "@smartpointer-desktop/eslintrc", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "description": "", "devDependencies": { "@typescript-eslint/eslint-plugin": "5.41.0", diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json index 99d9579e..b3a83324 100644 --- a/desktop/packages/main/package.json +++ b/desktop/packages/main/package.json @@ -1,6 +1,6 @@ { "name": "@smartpointer-desktop/main", - "version": "1.0.0", + "version": "1.1.0-SNAPSHOT", "description": "", "scripts": { "build": "vite build", @@ -10,11 +10,11 @@ "author": "", "devDependencies": { "@openapitools/openapi-generator-cli": "2.5.2", - "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/tsconfig": "1.0.0", + "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", "@types/ws": "8.5.3" }, "dependencies": { - "@smartpointer-desktop/shared": "1.0.0" + "@smartpointer-desktop/shared": "1.1.0-NAPSHOT" } } diff --git a/desktop/packages/preload/package.json b/desktop/packages/preload/package.json index a112827e..00632e7f 100644 --- a/desktop/packages/preload/package.json +++ b/desktop/packages/preload/package.json @@ -1,10 +1,10 @@ { "name": "@smartpointer-desktop/preload", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "description": "", "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/tsconfig": "1.0.0" + "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT" }, "scripts": { "build": "vite build" @@ -12,7 +12,7 @@ "keywords": [], "author": "", "dependencies": { - "@smartpointer-desktop/shared": "1.0.0", + "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", "unplugin-auto-expose": "0.0.3" } } diff --git a/desktop/packages/renderer/package.json b/desktop/packages/renderer/package.json index fb144f56..6b5edf60 100644 --- a/desktop/packages/renderer/package.json +++ b/desktop/packages/renderer/package.json @@ -1,10 +1,10 @@ { "name": "@smartpointer-desktop/renderer", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "description": "", "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.0.0", - "@smartpointer-desktop/tsconfig": "1.0.0", + "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", "@tsconfig/strictest": "1.0.2", "@types/qrcode": "1.5.0", "@types/react": "18.0.24", @@ -22,7 +22,7 @@ "@emotion/styled": "11.10.5", "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", - "@smartpointer-desktop/shared": "1.0.0", + "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", "framer-motion": "7.6.2", "qrcode": "1.5.1", "react": "18.2.0", diff --git a/desktop/packages/shared/package.json b/desktop/packages/shared/package.json index 44292657..019622ec 100644 --- a/desktop/packages/shared/package.json +++ b/desktop/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@smartpointer-desktop/shared", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "description": "", "dependencies": { "@tsconfig/strictest": "1.0.2" diff --git a/desktop/packages/tsconfig/package.json b/desktop/packages/tsconfig/package.json index 3fab9107..d4ba6502 100644 --- a/desktop/packages/tsconfig/package.json +++ b/desktop/packages/tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@smartpointer-desktop/tsconfig", - "version": "1.0.0", + "version": "1.1.0-NAPSHOT", "description": "", "devDependencies": { "@tsconfig/node16-strictest-esm": "1.0.3", From 5ecd9c149e6847ab8aa77a2f399e66c6381e3047 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 5 Nov 2022 20:35:02 +0900 Subject: [PATCH 031/189] add selectedPointerType to State type --- desktop/packages/main/src/model/index.ts | 8 ++++- desktop/packages/main/src/types.ts | 9 ++++- desktop/packages/shared/index.d.ts | 22 ------------- desktop/packages/shared/index.ts | 42 ++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 24 deletions(-) delete mode 100644 desktop/packages/shared/index.d.ts create mode 100644 desktop/packages/shared/index.ts diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 2aa88dab..c1706ac5 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -1,4 +1,9 @@ -import { PointerOrientation, User } from "@smartpointer-desktop/shared"; +import { + PointerOrientation, + pointers, + PointerType, + User, +} from "@smartpointer-desktop/shared"; import { Room, State } from "@/types"; @@ -34,6 +39,7 @@ export const createdRoom = (room: Room) => { room, joinedUsers: new Map(), activePointers: new Map(), + selectedPointerType: pointers[0]!, }; }; diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index 4cd1b147..aa3ba07f 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -1,4 +1,9 @@ -import { PointerOrientation, User } from "@smartpointer-desktop/shared"; +import { + PointerId, + PointerOrientation, + PointerType, + User, +} from "@smartpointer-desktop/shared"; import { RoomResponse } from "./generated/http-client"; @@ -15,11 +20,13 @@ export type State = Readonly< room?: undefined; joinedUsers?: undefined; activePointers?: undefined; + selectedPointerType?: undefined; } | { status: "CREATED"; room: Room; joinedUsers: Map; activePointers: Map; + selectedPointerType: PointerType; } >; diff --git a/desktop/packages/shared/index.d.ts b/desktop/packages/shared/index.d.ts deleted file mode 100644 index 2ca96dac..00000000 --- a/desktop/packages/shared/index.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -declare module "@smartpointer-desktop/shared" { - export type PointerCoordinate = { - x: number; - y: number; - }; - - export type PointerOrientation = { - alpha: number; - beta: number; - gamma: number; - }; - - export type User = { - id: string; - name: string; - }; - - export type UpdatePointersMessage = { - user: User; - coordinate: PointerCoordinate; - }[]; -} diff --git a/desktop/packages/shared/index.ts b/desktop/packages/shared/index.ts new file mode 100644 index 00000000..76468924 --- /dev/null +++ b/desktop/packages/shared/index.ts @@ -0,0 +1,42 @@ +export type PointerCoordinate = { + x: number; + y: number; +}; + +export type PointerOrientation = { + alpha: number; + beta: number; + gamma: number; +}; + +export type User = { + id: string; + name: string; +}; + +export type UpdatePointersMessage = { + user: User; + coordinate: PointerCoordinate; +}[]; + +export type PointerId = "SPOTLIGHT" | "ARROW" | "FINGER"; + +export type PointerType = { + id: PointerId; + name: string; +}; + +export const pointers: PointerType[] = [ + { + id: "SPOTLIGHT", + name: "スポットライト", + }, + { + id: "ARROW", + name: "矢印", + }, + { + id: "FINGER", + name: "人差し指", + }, +]; From 4fc843f043f8358ca4a3af020c6159fc67e5d4c6 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 5 Nov 2022 20:38:22 +0900 Subject: [PATCH 032/189] add select pointer type menu --- desktop/packages/main/src/controller/index.ts | 10 ++++++++- desktop/packages/main/src/model/index.ts | 11 ++++++++++ desktop/packages/main/src/view/tray.ts | 22 ++++++++++++++++--- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index f2eb3129..29240e58 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -1,4 +1,8 @@ -import { PointerOrientation, User } from "@smartpointer-desktop/shared"; +import { + PointerOrientation, + PointerType, + User, +} from "@smartpointer-desktop/shared"; import { roomApi } from "@/api"; import * as model from "@/model"; @@ -68,6 +72,10 @@ export const pointerDeactivated = (user: User) => { updatePointerInOverlayWindow(); }; +export const selectedPointer = (selectedPointerType: PointerType) => { + model.selectedPointer(selectedPointerType); +}; + export const showInviteLink = () => { showInviteLinkWindow(); }; diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index c1706ac5..99022a9a 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -107,3 +107,14 @@ export const deactivatePointer = (user: User) => { activePointers, }; }; + +export const selectedPointer = (selectedPointerType: PointerType) => { + if (state.status !== "CREATED") { + throw new Error("Cannot select pointer when not in CREATED state"); + } + + state = { + ...state, + selectedPointerType, + }; +}; diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index cbad8cc9..a68fe158 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -1,3 +1,4 @@ +import { pointers } from "@smartpointer-desktop/shared"; import { Menu, MenuItemConstructorOptions, Tray } from "electron"; import { join } from "path"; @@ -7,9 +8,13 @@ import * as controller from "@/controller"; import { getState } from "@/model"; import { State } from "@/types"; -type MenuTemplate = (state: State) => MenuItemConstructorOptions[]; +type MenuTemplate = ( + state: S +) => MenuItemConstructorOptions[]; -const defaultMenuTemplate: MenuTemplate = (state) => [ +const defaultMenuTemplate: MenuTemplate< + State & { status: "CREATING" | "READY" } +> = (state) => [ { label: "ルームを作成", accelerator: "CmdOrCtrl+N", @@ -18,7 +23,18 @@ const defaultMenuTemplate: MenuTemplate = (state) => [ }, ]; -const createdRoomMenuTemplate: MenuTemplate = (state) => [ +const createdRoomMenuTemplate: MenuTemplate = ( + state +) => [ + { + label: "ポインター", + submenu: pointers.map((pointer) => ({ + label: pointer.name, + type: "radio", + checked: state.selectedPointerType.id === pointer.id, + click: () => controller.selectedPointer(pointer), + })), + }, { label: "参加者一覧", accelerator: "CmdOrCtrl+L", From 76fe19c38b68edab38d61910af622f244fe826c6 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 5 Nov 2022 21:13:12 +0900 Subject: [PATCH 033/189] rename Pointer -> SpotlightPointer --- desktop/packages/renderer/src/overlay/App.tsx | 4 ++-- .../src/overlay/{Pointer.tsx => SpotlightPointer.tsx} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename desktop/packages/renderer/src/overlay/{Pointer.tsx => SpotlightPointer.tsx} (94%) diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index 7eed3ad0..769d4cd1 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -1,7 +1,7 @@ import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import { useEffect, useState } from "react"; -import { Pointer } from "./Pointer"; +import { SpotlightPointer } from "./SpotlightPointer"; import { onUpdatePointers, @@ -15,5 +15,5 @@ export const App = () => { onUpdatePointers(setPointers); }, []); - return ; + return ; }; diff --git a/desktop/packages/renderer/src/overlay/Pointer.tsx b/desktop/packages/renderer/src/overlay/SpotlightPointer.tsx similarity index 94% rename from desktop/packages/renderer/src/overlay/Pointer.tsx rename to desktop/packages/renderer/src/overlay/SpotlightPointer.tsx index 74a36dcf..cbd8dc3c 100644 --- a/desktop/packages/renderer/src/overlay/Pointer.tsx +++ b/desktop/packages/renderer/src/overlay/SpotlightPointer.tsx @@ -5,7 +5,7 @@ import type { FC } from "react"; type Props = { pointers: UpdatePointersMessage; }; -export const Pointer: FC = ({ pointers }) => { +export const SpotlightPointer: FC = ({ pointers }) => { const [width, height] = useWindowSize(); const radiusRate = 0.1; From 1be2e898dceb6f87de323b8b94201d7e3b51e8db Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 5 Nov 2022 21:13:44 +0900 Subject: [PATCH 034/189] get Pointers when component mount --- .../main/src/view/window/pointerOverlay.ts | 22 ++++++++++++++++++- desktop/packages/preload/src/index.ts | 7 ++++++ desktop/packages/renderer/src/overlay/App.tsx | 9 +++++++- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index c8b97a50..3227ead0 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -1,5 +1,5 @@ import { UpdatePointersMessage } from "@smartpointer-desktop/shared"; -import { app, BrowserWindow, screen } from "electron"; +import { app, BrowserWindow, ipcMain, screen } from "electron"; import { join } from "node:path"; import { getState } from "@/model"; @@ -90,3 +90,23 @@ export const updatePointerInOverlayWindow = () => { export const closeOverlayWindow = () => { overlayWindow?.close(); }; + +ipcMain.handle("get-pointers", () => { + const state = getState(); + + if (state.status !== "CREATED") { + throw new Error("Cannot get pointers when not in CREATED state"); + } + + const pointers: UpdatePointersMessage = [ + ...state.activePointers.values(), + ].map(({ user, orientation }) => ({ + user, + coordinate: { + x: -tanDeg(orientation.alpha) / 2, + y: -tanDeg(orientation.beta) / 2, + }, + })); + + return pointers; +}); diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index b1c0233e..b7631946 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -8,3 +8,10 @@ export const onUpdatePointers = ( callback(message); }); }; + +export const getPointers = async (): Promise => { + const pointers: UpdatePointersMessage = await ipcRenderer.invoke( + "get-pointers" + ); + return pointers; +}; diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index 769d4cd1..34837c96 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -4,16 +4,23 @@ import { useEffect, useState } from "react"; import { SpotlightPointer } from "./SpotlightPointer"; import { + getPointers, onUpdatePointers, // eslint-disable-next-line import/no-unresolved } from "#preload"; export const App = () => { - const [pointers, setPointers] = useState([]); + const [pointers, setPointers] = useState(null); useEffect(() => { onUpdatePointers(setPointers); + + getPointers().then(setPointers); }, []); + if (pointers === null) { + return null; + } + return ; }; From c84673ada93fd4fb505c1471fa1d38c61590c334 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 5 Nov 2022 23:30:06 +0900 Subject: [PATCH 035/189] update pointer types in overlay window --- desktop/packages/main/src/controller/index.ts | 5 ++ desktop/packages/main/src/stomp.ts | 1 + .../main/src/view/window/pointerOverlay.ts | 47 ++++++++++++++----- desktop/packages/preload/src/index.ts | 20 ++++++-- desktop/packages/renderer/src/overlay/App.tsx | 26 ++++++++-- desktop/packages/shared/index.ts | 5 ++ 6 files changed, 82 insertions(+), 22 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 29240e58..6ae3e58a 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -20,6 +20,7 @@ import { closeOverlayWindow, showOverlayWindow, updatePointerInOverlayWindow, + updatePointerTypeInOverlayWindow, } from "@/view/window/pointerOverlay"; export const initialize = () => { @@ -33,6 +34,8 @@ export const createRoom = async () => { const { data } = await roomApi.createRoom(); + console.log("created room", data); + await activate(); model.createdRoom(data); @@ -74,6 +77,8 @@ export const pointerDeactivated = (user: User) => { export const selectedPointer = (selectedPointerType: PointerType) => { model.selectedPointer(selectedPointerType); + + updatePointerTypeInOverlayWindow(); }; export const showInviteLink = () => { diff --git a/desktop/packages/main/src/stomp.ts b/desktop/packages/main/src/stomp.ts index ab8ee4b9..54d7bb15 100644 --- a/desktop/packages/main/src/stomp.ts +++ b/desktop/packages/main/src/stomp.ts @@ -13,6 +13,7 @@ const brokerURL = const stompClient = new Client({ brokerURL, + debug: console.log, }); enum SlideControl { diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 3227ead0..97367c8d 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -1,4 +1,8 @@ -import { UpdatePointersMessage } from "@smartpointer-desktop/shared"; +import { + GetPointerResult, + PointerType, + UpdatePointersMessage, +} from "@smartpointer-desktop/shared"; import { app, BrowserWindow, ipcMain, screen } from "electron"; import { join } from "node:path"; @@ -87,26 +91,43 @@ export const updatePointerInOverlayWindow = () => { overlayWindow.webContents.send("pointers-updated", message); }; +export const updatePointerTypeInOverlayWindow = () => { + const state = getState(); + + if (state.status !== "CREATED") { + throw new Error("Cannot update pointer type when not in CREATED state"); + } + + if (overlayWindow === null || overlayWindow.isDestroyed()) { + return; + } + + const message: PointerType = state.selectedPointerType; + + overlayWindow.webContents.send("pointer-type-updated", message); +}; + export const closeOverlayWindow = () => { overlayWindow?.close(); }; -ipcMain.handle("get-pointers", () => { +ipcMain.handle("get-pointers", (): GetPointerResult => { const state = getState(); if (state.status !== "CREATED") { throw new Error("Cannot get pointers when not in CREATED state"); } - const pointers: UpdatePointersMessage = [ - ...state.activePointers.values(), - ].map(({ user, orientation }) => ({ - user, - coordinate: { - x: -tanDeg(orientation.alpha) / 2, - y: -tanDeg(orientation.beta) / 2, - }, - })); - - return pointers; + return { + pointers: [...state.activePointers.values()].map( + ({ user, orientation }) => ({ + user, + coordinate: { + x: -tanDeg(orientation.alpha) / 2, + y: -tanDeg(orientation.beta) / 2, + }, + }) + ), + pointerType: state.selectedPointerType, + }; }); diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index b7631946..8991ca4f 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -1,4 +1,8 @@ -import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; +import type { + GetPointerResult, + PointerType, + UpdatePointersMessage, +} from "@smartpointer-desktop/shared"; import { ipcRenderer } from "electron"; export const onUpdatePointers = ( @@ -9,9 +13,15 @@ export const onUpdatePointers = ( }); }; -export const getPointers = async (): Promise => { - const pointers: UpdatePointersMessage = await ipcRenderer.invoke( - "get-pointers" - ); +export const onUpdatePointerType = ( + callback: (message: PointerType) => void +) => { + ipcRenderer.on("pointer-type-updated", (_, message: PointerType) => { + callback(message); + }); +}; + +export const getPointers = async (): Promise => { + const pointers: GetPointerResult = await ipcRenderer.invoke("get-pointers"); return pointers; }; diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index 34837c96..fbffad9e 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -1,26 +1,44 @@ -import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; +import type { + PointerType, + UpdatePointersMessage, +} from "@smartpointer-desktop/shared"; import { useEffect, useState } from "react"; +import { ArrowPointer } from "./ArrowPointer"; +import { FingerPointer } from "./FingerPointer"; import { SpotlightPointer } from "./SpotlightPointer"; import { getPointers, onUpdatePointers, + onUpdatePointerType, // eslint-disable-next-line import/no-unresolved } from "#preload"; export const App = () => { const [pointers, setPointers] = useState(null); + const [pointerType, setPointerType] = useState(null); useEffect(() => { onUpdatePointers(setPointers); + onUpdatePointerType(setPointerType); - getPointers().then(setPointers); + getPointers().then(({ pointers, pointerType }) => { + setPointers(pointers); + setPointerType(pointerType); + }); }, []); - if (pointers === null) { + if (pointers === null || pointerType === null) { return null; } - return ; + switch (pointerType.id) { + case "SPOTLIGHT": + return ; + case "ARROW": + return ; + case "FINGER": + return ; + } }; diff --git a/desktop/packages/shared/index.ts b/desktop/packages/shared/index.ts index 76468924..109506cc 100644 --- a/desktop/packages/shared/index.ts +++ b/desktop/packages/shared/index.ts @@ -19,6 +19,11 @@ export type UpdatePointersMessage = { coordinate: PointerCoordinate; }[]; +export type GetPointerResult = { + pointers: UpdatePointersMessage; + pointerType: PointerType; +}; + export type PointerId = "SPOTLIGHT" | "ARROW" | "FINGER"; export type PointerType = { From 1af48800ef3f67df43c4d38d8cb595574b290b94 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 5 Nov 2022 23:48:55 +0900 Subject: [PATCH 036/189] remove unused type --- desktop/packages/main/src/types.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index aa3ba07f..907ec0e9 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -1,5 +1,4 @@ import { - PointerId, PointerOrientation, PointerType, User, From e85cd6da87bd1d65496f3cc44010746b647ff310 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 5 Nov 2022 23:53:57 +0900 Subject: [PATCH 037/189] add main to shared --- desktop/packages/shared/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/packages/shared/package.json b/desktop/packages/shared/package.json index 019622ec..b85d464d 100644 --- a/desktop/packages/shared/package.json +++ b/desktop/packages/shared/package.json @@ -2,6 +2,7 @@ "name": "@smartpointer-desktop/shared", "version": "1.1.0-NAPSHOT", "description": "", + "main": "index.ts", "dependencies": { "@tsconfig/strictest": "1.0.2" } From 4225bb33b5ed09b3fb266508be793292dde5f881 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 6 Nov 2022 02:19:12 +0900 Subject: [PATCH 038/189] change origin when using dev backend --- desktop/packages/main/src/view/window/inviteLink.ts | 4 ++++ desktop/packages/renderer/src/link/InviteLink/index.tsx | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/desktop/packages/main/src/view/window/inviteLink.ts b/desktop/packages/main/src/view/window/inviteLink.ts index 0a47d162..8eb4325a 100644 --- a/desktop/packages/main/src/view/window/inviteLink.ts +++ b/desktop/packages/main/src/view/window/inviteLink.ts @@ -24,6 +24,10 @@ export const showInviteLinkWindow = async () => { await loadFile(inviteLinkWindow, "link.html", { roomId: state.room.roomId, passcode: state.room.passcode, + origin: + process.env["USE_DEV_BACKEND"] === "true" + ? "https://REPLACE_HERE_TO_ADDR:8080" + : "https://smartpointer.abelab.dev", }); } diff --git a/desktop/packages/renderer/src/link/InviteLink/index.tsx b/desktop/packages/renderer/src/link/InviteLink/index.tsx index a282143c..9d4abaf2 100644 --- a/desktop/packages/renderer/src/link/InviteLink/index.tsx +++ b/desktop/packages/renderer/src/link/InviteLink/index.tsx @@ -15,16 +15,16 @@ const getQueryParam = (queryParamKey: string) => { const roomId: string = getQueryParam("roomId"); const passcode: string = getQueryParam("passcode"); +const inviteLinkOrigin = getQueryParam("origin"); -const getInviteLink = (roomId: string, passcode: string) => { - const inviteLinkOrigin = "https://smartpointer.abelab.dev/"; +const getInviteLink = () => { const url = new URL(inviteLinkOrigin); - url.searchParams.append("roomId", roomId); + url.searchParams.set("roomId", roomId); url.searchParams.set("passcode", passcode); return url.toString(); }; -const inviteLink: string = getInviteLink(roomId, passcode); +const inviteLink: string = getInviteLink(); export const InviteLink: FC = () => { const canvasRef = useRef(null); From a64e7b2f216c77be862955d3306daca5608ceb5e Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 6 Nov 2022 02:25:14 +0900 Subject: [PATCH 039/189] ignore shared build file --- desktop/packages/shared/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 desktop/packages/shared/.gitignore diff --git a/desktop/packages/shared/.gitignore b/desktop/packages/shared/.gitignore new file mode 100644 index 00000000..a6c7c285 --- /dev/null +++ b/desktop/packages/shared/.gitignore @@ -0,0 +1 @@ +*.js From fc33712ffaa5f55fbefc47c605f072986da75754 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 6 Nov 2022 03:52:52 +0900 Subject: [PATCH 040/189] fix linux focus probrem --- desktop/packages/main/src/controller/index.ts | 8 ++++---- desktop/packages/main/src/view/window/pointerOverlay.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 6ae3e58a..a385ecb7 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -43,8 +43,8 @@ export const createRoom = async () => { listenRoomSubscription(data.roomId); updateTray(); - showInviteLink(); - showOverlayWindow(); + await showOverlayWindow(); + await showInviteLink(); }; export const joinedRoom = (user: User) => { @@ -81,8 +81,8 @@ export const selectedPointer = (selectedPointerType: PointerType) => { updatePointerTypeInOverlayWindow(); }; -export const showInviteLink = () => { - showInviteLinkWindow(); +export const showInviteLink = async () => { + await showInviteLinkWindow(); }; export const toggleOverlayWindowDevTools = () => { diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 97367c8d..a01b1bd9 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -29,7 +29,7 @@ export const showOverlayWindow = async () => { show: false, frame: false, transparent: true, - focusable: false, + focusable: process.platform === "linux", hasShadow: false, webPreferences: { preload: join( From c91bdc8d9048e6fea9802af9ebec3acea5074dd8 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sun, 6 Nov 2022 04:42:13 +0900 Subject: [PATCH 041/189] =?UTF-8?q?change:=20=E3=83=A1=E3=83=8B=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E3=83=90=E3=83=BC=E3=81=AE=E3=82=A2=E3=82=A4=E3=82=B3?= =?UTF-8?q?=E3=83=B3=E3=82=92=E3=81=A1=E3=82=83=E3=82=93=E3=81=A8=E3=81=99?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/assets/menu-bar-icon.ico | Bin 1150 -> 0 bytes desktop/assets/menu-bar-icon.png | Bin 314 -> 0 bytes desktop/assets/tray-icon-white.ico | Bin 0 -> 5430 bytes desktop/assets/tray-icon-white.png | Bin 0 -> 289 bytes desktop/assets/tray-icon-white@2x.png | Bin 0 -> 440 bytes desktop/assets/tray-icon.ico | Bin 0 -> 5430 bytes desktop/assets/tray-icon.png | Bin 0 -> 272 bytes desktop/assets/tray-icon@2x.png | Bin 0 -> 409 bytes desktop/assets/tray-iconTemplate.png | Bin 0 -> 272 bytes desktop/assets/tray-iconTemplate@2x.png | Bin 0 -> 409 bytes desktop/packages/main/src/view/tray.ts | 14 ++++++++++++-- 11 files changed, 12 insertions(+), 2 deletions(-) delete mode 100644 desktop/assets/menu-bar-icon.ico delete mode 100644 desktop/assets/menu-bar-icon.png create mode 100644 desktop/assets/tray-icon-white.ico create mode 100644 desktop/assets/tray-icon-white.png create mode 100644 desktop/assets/tray-icon-white@2x.png create mode 100644 desktop/assets/tray-icon.ico create mode 100644 desktop/assets/tray-icon.png create mode 100644 desktop/assets/tray-icon@2x.png create mode 100644 desktop/assets/tray-iconTemplate.png create mode 100644 desktop/assets/tray-iconTemplate@2x.png diff --git a/desktop/assets/menu-bar-icon.ico b/desktop/assets/menu-bar-icon.ico deleted file mode 100644 index 28a6cd8f493689b04ce1976e0011dfffeffa5da2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcma)*Jx;?w5QQHS9gQU<>MbdA131c-bmRuHL_ryD;M{;CxS*iS9cWS}5(SEcSiT{i z$gI}cIQl$)?*UqbLYkIeeKH?GZlO2aHdJND%Hpow|kYv$E6g{B8PzQ>E&c3Z(Y z=jk3@>t=G>yNBStT10El(*DyPVohI~;|t!m9PFK{?(d#)#Mgpf|DMfQH%LwY1s7M*94c_V0l68_f@SdIRDwjI{``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{&`Oq$B+ufxj~GAhYWap(iDWo)a>p}h{94#b^vvbuQdh2nKhp=B{noi!;MA6=D;r*8_e*8|B94@O`^%0{KWjr>VYwxUAHCY32i&4HF-+2fg9F#lQF57SmfmFETKAy85}S Ib4q9e08cY}CIA2c diff --git a/desktop/assets/tray-icon-white.ico b/desktop/assets/tray-icon-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..ff8b8f30e27e9b795319c6c543050d008bb5ac8e GIT binary patch literal 5430 zcmd6rziSjh6vyX`8bl;PyK|~ZJSlL}fON*3(f@>rG0fKh7e}RY~cAlL!l1fqp zytA_qVk1_%mr5&hSjdSn>*sqr6E<^uyWw^NdGN`bd2im2nf-A~jA@tyrr9*;z}!D* z%sFFB5Tx_h*dJp%kBuQKQaj2R>?e+&0+0#(Od8l)cap>@`J%uD2l&?|CE&QsLC+bZ-HeknP)ZC&yYOj;zD-K=f z9r2pTX3<&e%=6?IMqS^ccwK8-qml69@!vD4qx>&@1+WaU)j@ew z^%c}o-Iw5t?z=thf&3A~;3ReftCy?qa6ALKLx^n+sSb?xita*I!to5#SxDN1>{-Xm zms~c+0qESb5<7oYO;Vk=lMR;-gX(7ca%-H9+}bLdWL=lg>Lqjtv7Jv+@&{FFE0!Ex zm{vM9)Yo3CNKiu$afJrfYN)?Zp}s=H8hR+Y*UQ?g{5(=1C@WIpk7_uBc1evgcThtQ zaaoZ9|9*HL7iu_zwSqmCx%R`oxc&Pz?OCwND$ipyZCw{feLascOe3MoQ$ z{4uqfUOj(W`M1EY>CY)xbpDaQzV12o_3fzV!Iv0AZSTRNzNw=gx)6iTqXWUDnB+ZP z!$0X@*lZ{Lu$`<&t)y?}Epy4hh}mQ~VkX%%4b}^SQrbymQhMk<_CEh&8O*^#E7=U^ MF+k6vu^6=e1D8buu>b%7 literal 0 HcmV?d00001 diff --git a/desktop/assets/tray-icon-white.png b/desktop/assets/tray-icon-white.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ca07573231883aa2b29101cc77cb5739fe1f32 GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{x(k+$B+uftwDjj%?1K{{TPKNG_+beIH{gF zXvRAEfQ$jV#|@bhJ~I)S^##5Pjk`Y`^p3l=rMC9{I@MDQ#^MRbh2^%03&d7*TD_h7 zLgTjI7( z6pH69U*DPhxUOr*);qy(=l2?Uy>9wa7&Y_!?3)?4K1$9lj^|0=!2UQ~H=}CZj=JTx g6Ik>;L!zIvKb6juI{V@|56}k;p00i_>zopr00t3iApigX literal 0 HcmV?d00001 diff --git a/desktop/assets/tray-icon-white@2x.png b/desktop/assets/tray-icon-white@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9440ff0a4b4dfda5e03cf65103fa6328ac0d3e93 GIT binary patch literal 440 zcmV;p0Z0CcP)?LLiCvlM&B@CWHn0(JN|G6PTgBtjOg3bQ$sz0xih{ZUwrVVAVDN*HsmiP&nXJ)H~CsetYv3Bdv zJdR_H6_7XKIhHY`#@@RQSP6qN3^au5HJqS<=?x}_g9h%iU5XwWSS~!z2n{T=U5r5~ z)Csbhc!>V$WJ2I_5Rpn>-<8b>LzU2ZRUm-vvlX0G$+KcPjcuu(-z zbllrA6fD4I+|5K`exfAQBWLSlL}fOAAXu!L<=TfS}#&ClC?D&bv+fynkk9_wHiMjM-yaErYe@_FiL7 z8Dp%S%%9=Ek8cqlLn0=Aj4}9+9GtK<|M$;+T$kY$ticVas?!8MfYsD~!G44@FiqzO zcn>e&BHV><;NT(bgEHM@aTDHx_Wlc$E55=7DAQRMKZDQ7+vltuDl5R+J@^gzT+M&L zbtuzu7T-WozI<9!Oqs5+s9r@iv^VW>2DX#VsIwO3%l8TNoXe!U)}0sC_>N!Cw@iB0 zdgl53b$pNDFiex)xeuTkKj9@@g_Cdqs^}6ykKq=a2i?mWJb`0SMYCy;-e-Rvy_-?$ zuWIfP=<~;n^_>4lCkS2zeWsqmQJAQWS%CSJIjmskamoNY;H??LC}oV@ghfIvEQ7v} zw!|0Dl<%2IT=8Fvdj*ozYQ7t?H0goAXK(f1S!hx*#dTiaGdq?~_tAtRie`ItnOl(h zpx&N{ab40+QxAOYgz**dvJ76w-ErhC1fqd<%^KNK!@}q$M+NXt3B^0Q7=6u|{(B|YX1@zZ`A_!HF0{OF5ohPBq z$+rRhwa*wr)uBMuGZ)3#&<&8E1ni+(L;onCzwSiua;Wr~D!Sh)z9h6c`8J@x_L%+s zV!9*s$f|PQqL_F`9sf?UOm&w<^{4qF^6F5BBGY>1*AsGDbu>?Fs9wIucJnT=HqEQc zL=@VtpZE8PvCx!ODC~P>ZGt~)s%fUKWvny$-ugeS177;PWxq2NYyD!4c9~l0Wx-2x zzpt!K@LM0$pv|5;+h5~ugMC%nLcV8quDvxWea^G}^5dk*=4tJ+`;T{_{}Mgcq3G``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{!&jD$B+uft&Fm17+Wd7qeUd!NhJYNqpT0cwa zXvLt=iOW&S-LC!p-TCaHz&oH@BWtJ zICH(Kxnqoiz literal 0 HcmV?d00001 diff --git a/desktop/assets/tray-icon@2x.png b/desktop/assets/tray-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f83d31dc30ffc814a5fb8b8bf6ab76ee7ce2231c GIT binary patch literal 409 zcmV;K0cQS*P)~}{1F(TBQSzDflcTJ8G#Y#2JQxQgVt7SmAJ%7IKz`p2rT*j+259c`m{k) zkPn)J#vtP)qWKc^l_?g}a02s&dD6haGzIgt3jcVaZUH4eIk1p-K^@l} z9^Y>*zflR}=a{9*W7qdt5$k50sC*1B+)n8@7)QC&4@tbnKTtr@Si6w^3G?bVpz&P# zwOnc9NAH1w{mW^H82geZb%@M@xktpIrEd}Og87I@kCxsLFwuNKD?9rw2-jvEyiR+BEP??(A#3{;}YjAF7bD``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{!&jD$B+uft&Fm17+Wd7qeUd!NhJYNqpT0cwa zXvLt=iOW&S-LC!p-TCaHz&oH@BWtJ zICH(Kxnqoiz literal 0 HcmV?d00001 diff --git a/desktop/assets/tray-iconTemplate@2x.png b/desktop/assets/tray-iconTemplate@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f83d31dc30ffc814a5fb8b8bf6ab76ee7ce2231c GIT binary patch literal 409 zcmV;K0cQS*P)~}{1F(TBQSzDflcTJ8G#Y#2JQxQgVt7SmAJ%7IKz`p2rT*j+259c`m{k) zkPn)J#vtP)qWKc^l_?g}a02s&dD6haGzIgt3jcVaZUH4eIk1p-K^@l} z9^Y>*zflR}=a{9*W7qdt5$k50sC*1B+)n8@7)QC&4@tbnKTtr@Si6w^3G?bVpz&P# zwOnc9NAH1w{mW^H82geZb%@M@xktpIrEd}Og87I@kCxsLFwuNKD?9rw2-jvEyiR+BEP??(A#3{;}YjAF7bD [ let trayInstance: Tray | null = null; +const getIconFileName = () => { + if (process.platform === "darwin") { + return "tray-iconTemplate.png"; + } + if (nativeTheme.shouldUseDarkColors) { + return "tray-icon-white.png"; + } + return "tray-icon.png"; +}; + export const updateTray = () => { const state = getState(); if (trayInstance === null) { - const iconPath = join(assetsPath, "menu-bar-icon.png"); + const iconPath = join(assetsPath, getIconFileName()); trayInstance = new Tray(iconPath); From 561501ab220be507ea9b1cdbe0d699d9b771ec9a Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sun, 6 Nov 2022 04:58:34 +0900 Subject: [PATCH 042/189] =?UTF-8?q?add:=20=E3=82=A2=E3=82=A4=E3=82=B3?= =?UTF-8?q?=E3=83=B3=20=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/.electron-builder.config.js | 1 + desktop/buildResources/icon.icns | Bin 0 -> 532959 bytes .../icon.iconset/icon_128x128.png | Bin 0 -> 15386 bytes .../icon.iconset/icon_128x128@2x.png | Bin 0 -> 15386 bytes .../buildResources/icon.iconset/icon_16x16.png | Bin 0 -> 696 bytes .../icon.iconset/icon_16x16@2x.png | Bin 0 -> 696 bytes .../icon.iconset/icon_256x256.png | Bin 0 -> 50886 bytes .../icon.iconset/icon_256x256@2x.png | Bin 0 -> 50886 bytes .../buildResources/icon.iconset/icon_32x32.png | Bin 0 -> 1853 bytes .../icon.iconset/icon_32x32@2x.png | Bin 0 -> 1853 bytes .../icon.iconset/icon_512x512.png | Bin 0 -> 121111 bytes .../icon.iconset/icon_512x512@2x.png | Bin 0 -> 121111 bytes desktop/buildResources/icon.png | Bin 0 -> 121111 bytes desktop/package.json | 2 +- 14 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 desktop/buildResources/icon.icns create mode 100644 desktop/buildResources/icon.iconset/icon_128x128.png create mode 100644 desktop/buildResources/icon.iconset/icon_128x128@2x.png create mode 100644 desktop/buildResources/icon.iconset/icon_16x16.png create mode 100644 desktop/buildResources/icon.iconset/icon_16x16@2x.png create mode 100644 desktop/buildResources/icon.iconset/icon_256x256.png create mode 100644 desktop/buildResources/icon.iconset/icon_256x256@2x.png create mode 100644 desktop/buildResources/icon.iconset/icon_32x32.png create mode 100644 desktop/buildResources/icon.iconset/icon_32x32@2x.png create mode 100644 desktop/buildResources/icon.iconset/icon_512x512.png create mode 100644 desktop/buildResources/icon.iconset/icon_512x512@2x.png create mode 100644 desktop/buildResources/icon.png diff --git a/desktop/.electron-builder.config.js b/desktop/.electron-builder.config.js index 37d3cb25..2512d0f8 100644 --- a/desktop/.electron-builder.config.js +++ b/desktop/.electron-builder.config.js @@ -5,6 +5,7 @@ const config = { directories: { output: "dist", + buildResources: "buildResources", }, files: ["packages/**/dist/**"], extraResources: ["assets"], diff --git a/desktop/buildResources/icon.icns b/desktop/buildResources/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..f5bc5e3cd5504fa0fe0b793be9eafdd4f97f59e9 GIT binary patch literal 532959 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⪙f(hvSt$iqfX^`aw%=abPu}t?&F{=lCh6CaQHS67ZIFcx>#4nfl4iVs#MI)xY>}(a z381x`Eg;lwUIQ@A_TRvyCm4WnFXI51ZFY(+I_A4}?{)qb3Hh^k)l<{$%jqIcNSWto zOB?0hn7cELpwBajg{JwVJUM{t9rxVuzITn-*#&@#3!eWSe}N#bngs$m6X^xyynGCc z#)77(FhO#Y#XTJ)Kxc$}*sP2s^%1PmEO0ob$f67-W=g&i>kbNoP8 zPBO2g1LqWfCcAaRhi~3!-vqSJ3jyyfJnQ^#mA?=EpA!hnG0GPgznr#uaKV{Q;UZ_e zJo$g(=`WOax5KY~_}KLBkH25*KqtvfcJWz0=#V}W3o(h4R+#^6s3t6Ekq0kO}9DK^4r05!F;h~0* zKh8;0fWRlCF(3GEvB<_x#~nu;gMhKg?m(}RrDUHsCo~3QeI?q!3I{^mAGqwq4R_qv z6d0^r0021g_{$F;MUWT7aTbBDGEPsjR+to<86tirBas0>f}kZ!m9BWLCzoqiW)!e- z@mN10;SX~lR44ky+AOAZquws`Z zZ~Xn@UGJRmSB-@%&MFae?2XPmcO6_a>njjM(OYa8Sx_#lv+4B?A~{em84R@^opk+( zg@8N7H6q{+JXS(Zz1EE~>d@vn76yAjSnmZgioG^BnefleINAv$JEF~NT*j1kOZyTL zx6rI{%KD*as2rBZ#6_OOPFc7|U$lxH&l^1;LW03t-h1V1uakN>tXu%7d;Fz`@4?N3 zs~S$hwAt!_aW$_^jd&3x|CmELIpC%p22O^0K$$#-Em0T2%IHzN9YX5Zput#;w`IqA?bcjO zqRct-Ndo0FXK4#SlO23qf~VqFKlQo#pMd5JXEx&_^{t=y{fTcK-j8PnY;?=}2N&XF z%a=Uy@SZ;6E5kaxA2%Lf{yVSrY>@}opthg%y+-2>n6JTDH?IM(!}=wOU@9FG{e)@B=GXt~%Q^XCu#M;~tLG9O}@ z5pFjDKE<_D0Leujs>sh7&qd2yin1eUddn?8@VcvIusE1yA>{Pv+ppO?wRQUaus)Y_ zQFp&BpEyHrt&X6L^JW|p3YINlaQV22qUV5wq{~&Y%cNLy7&*qViYCFr2rd$KWw8KY z>M*MAjv?IXN24pg;plWZo|^N&1p88Ge}W6j%YXZ|`Uc~9vh(P?ktj>T)@z1DdD5t< zU<0hg>vXcMmu)tluVFT?J?26*$JlOf$Am`oa&0`{nS0$uBr&erL&WR-cao273}loK z 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⪻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 Nf_949FZvf({|D$sKm-5) literal 0 HcmV?d00001 diff --git a/desktop/buildResources/icon.iconset/icon_128x128.png b/desktop/buildResources/icon.iconset/icon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..96c2791f8b6fac7a384d6bd3fc76be96325b1250 GIT binary patch literal 15386 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 literal 0 HcmV?d00001 diff --git a/desktop/buildResources/icon.iconset/icon_128x128@2x.png b/desktop/buildResources/icon.iconset/icon_128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..96c2791f8b6fac7a384d6bd3fc76be96325b1250 GIT binary patch literal 15386 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 literal 0 HcmV?d00001 diff --git a/desktop/buildResources/icon.iconset/icon_16x16.png b/desktop/buildResources/icon.iconset/icon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..ef6fdb8d65f56b923b894133ce573a7149cbb237 GIT binary patch literal 696 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 literal 0 HcmV?d00001 diff --git a/desktop/buildResources/icon.iconset/icon_32x32@2x.png b/desktop/buildResources/icon.iconset/icon_32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc3e19f746502d218feeb75e5a3db61fcd98346 GIT binary patch literal 1853 zcmV-D2g3M?P)KQ z2_zVCLxfT(D1^#V5L3ifXrVyaN`aQr!kh8TcJJIrxqY{9-prXZ=X~coXJ#0j=au6h zWQP&A5CWM3NM!Wlz7GQ<0U=0IHsmAQ?TWHS8mysKjbQBibwd^w`&#HJtXP>C7f$#P z9EDn*#9aaN1k?*NNQ*LM0E?A?Yn%No#ptuPjbqi9BNjJCoc#1gg|ZcMZ`WQ zZk*9ZOWCMDSLnHkA+jbh8nd8+oAW>jXk564#*=s4coa40Y_0nPS6Z*Dg>T($#m3rF zTxz-I=oOy6XjGw^$ny8UFJiJskKz)@hiQTZ(lc)fu0=` z6bYN}+`b2qK(sR?}3E?dQr>-^~8G z=+`9$vajiGi>^JwXtZr%Yl}e0W3x#s?xvSRNU3yiLK?Q5-s3}SWuSFzJ9_{tD~eU$ zJHuw9GlfTo)3Tn&gqjSnDdc4V904Z!orSj}VSIO!-^UsSo35V(l(DZ}n7 zXZs`E2HuuxNZU}6RDytCOrbB|q<|_9P=t&z& zUV09`sN81y{k=ecbL+LRwLUv_IJ(5e z1ogKX5EFWTdpFWL%>?oW zdny_?UPoQzs6BJQM5VZ-?r=NR)yW30HUJTQIADrAio?djS&vM_Hz#+YzPZ7JL?{{W z5W+0m<&)C+LChLB5pzmcE2x8Ty52jSpudQ;jM*e%nyr)jWT`nj&m3~3xh&bt5>KBS zgu(==u571s0kfN6L@9OlDO=p=4)GYWTxhaFYOPL*ul(5KPV+Jef4 z8Vv6_0P}}WLx)fV$1YcUprm%`j-^?7D6ZUzs%z)WJ_2Sz5bpLa;FM)=tT96Ofkv8= z=;SntDz>7!@f->UPsK}Y3f|tg9^Y2&K|#h;<+)NqSWfPnr54_Py4<;wke3u6CP`?o z1Kb~TBTCJhaN6|IIn)@0n5UW)Z#h|pu2j|D$eMw!k$9~8>t|hHg!cZur(VX=y`OtU zNBA3?x(FDUon-XAG$Ah!_kMO%J!M3p<$$Niq|VVx)hMk!g3OcwSoV0nDzhEJ5xhx8 zm7Y05V}}FtJUuE?b=ulKyU(GM1j%n1Jrfy7vuIPc=t!Ve|=)&an ryRHjJqSF-}M+FOgbYON-nVt4OV^U`focuWG00000NkvXXu0mjft>cAF literal 0 HcmV?d00001 diff --git a/desktop/buildResources/icon.iconset/icon_512x512.png b/desktop/buildResources/icon.iconset/icon_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..25f34eb3e92ab5f13741a9dc10deafc502ee79e3 GIT binary patch literal 121111 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 Z(KT0CtNBFHad<<&pQdj*3LXET?_ZPq8I+ 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 z z)fLPjf9t~?Ur<_|{X!J(Ui-TDEZ+|`HQu0GtAOr*1djqV7&Gwn& z&-xH>xyV*${RnOfQ$0J_T?R3)&pf+`c{y-qtm%rQFVvfUZ=THfawQXTYp=YdtS9p) zb$@YsBJL9^ka&Gje+5uTh~RC~AXM#Qb&#KlWV3g=Pih!yU=|GqE;W%P&vv;wo+yGB zTaR{-W?0}BBpnS3&dQ17jsFKe`axRD<1Y_C_6V)`Kjrv8ckbeJ)DnQl=wgfgI5!|> z$^$5_i4eiD2;m}x)yG#93eo|lEf6Hfz@f_rDgrt_bMdhbLz>ZLkjEUdjoGaAEF1Ey zNb>!p6v%{1&=R3y;OvARoUF3uYf6_x9~=UxP)SdkNO-b9lAIh@J!=1U9@I1U9qldP z)24r={J4 zRQ_!wBfzf96hoe!0y#@UX1;5FX0l}ap%&)Ekh9x{^ZUSQxRbmTPWp~<9D03FCDSE* zlKaky$NvY`1mH-@bPHg`Kb>m)@20@>qktQ&b0J<_!!DHnq3|L=%bg?*AOLb<4<%tl z8wPD4ix33L6b%SuLUV)};LDb=g-phnjdwu@KZTMkI(l*pqWBAcJSmDXxro3Cs<)9G zf+fC%3CH-98I!7yeUTHKMj$XMY2w_L05}LXrVPT;r}t-lr=?wn*&R_%o`_O*>zOd; znE(jae!G$-3k)`pv2LV%HX8x386DjC2p=k{;_RPX6yib76C}ojiU*64v+7*4ASt6Ru6&cx)A?C7v#R9Y13j<^58T_9l^kzZi6yW~@k9=_52zUf#N&r^; zpKknbL_TRcE_(pApE=CydQu(R zIiz8>GUGEvNSADDaVO^rLbsNPq(p&iHH8b(z*kfcEr~J!jO?I&mE{oU6)PDp)PQEl zBFx%-Q4RF#r`z|u+oyF-ID_$7O{3&L+mYV%h`iO3Ox@REfgc5tah=99$ES7|@9w8a z;CxWVwgkA$JmpRr!zUU4A9(aZTFaG}`yRf3#s68r|2e*8`aUNBTapXTEGPs4o20=3 zMkq4|#;Jis)Ih2YxPYC(Csf7ioD{){Oko@vsrd%|xKhBVf|;N8BM_Ln!qg4k%;6|G zp`a|gRtQp@*>Akf^zA*`-o|t=qHRR<9;wnEct>=`(Z+)KEJIt#pcEXo5ZPsrOc*Gc zAh}5PZG8JHWLrbr^icey7qaQNW%ezRmguI^U|t|2r4I=f32(>D?;SeBi4j4(M<6QVE+ym_hR6c~q5ygBTQXEICw?ywPg44=1hI}`P#P8)f9Kjp1d_U?jK9>61aRCJwt-KE zWk?frQAtSGRyYO=o@qgb#_tRRgy!`BMzNa0m_&?S7-&MLeed;X$ z{dFMjXl4ugz#~Bn2AW~JI2X3yG&0j3nZ_5PJ?nR@$Z%T`o6J1O*x5S1(#66ClRvw< zuUPgR-$7rnbClmFiWa z0h$6gL<2d8{H3MI*avGmEmtqSZVALE5f-BQyiJK{c?c>tn?`@n$R$a6Dd?XUSaLJvvs1BjN0|q z3;LSSlA8;0_%kLx%)ViVU`a;~p|hDUg>ll2CQwU-jqimSv=Og#i9%kfP0U^v=n9`W z6Y3rUyCm;5xI6 zkLD-pIPM5a1D6knv*(CLv*VO3Oa$n-j)=NJwmRf^lS&JE)hVs`Kwkz;{G{lM@dZQ9 zXRGUv7kYa&k}|_I;Gx7zGNSb_K>`JHcxIRw)0pzK0sH(C1^?J75o8xL9CyEi5PE! zz8BD758#qo`Mo|Y5?8B8d*r*Sg8hhVmiIT}PAJYiIwOMKAkZJIA7MZ&HG;Sf#34#L* znw(1{_X$C-lzf8AUWQ>MH9Dcr2D38=*z++2-;@m5xk-V$+XJlhuuped3V;I3ScmHc z_o?_}Dw%ZvMu5g>aOn9rehoAQTv|`M!7b^pMyAkBQauKQsKJ4ikf{X}j$qi>%$P8p zv5Ud(H%gBqI7kY54Eja4sxO5qawhpxGdex^|G5v{x4sYHGRt(^r6ORIw+zuEf)JOa+TdMyq!7-c6pLID8eA8&zrKV#kIxFrL{91%T z2Xx;uK7>XIV|{Z-ijy36&JIXL4#`xuZ9EM1`9Bi#s3+@|5T6USDI2z&W0cVXtm!e)@W4f#F3e$O z$A$VXPjma^sM2HxUf??F2!g)%r){QW$b)={STj`R5iS-wy<;n9%EJ~cCaUKd(AF1$ zen9RN_>1c7B{UR@blqWgohqpwy$=q5sy5fl3EXpVfO;`Y3CjrR2K~u)G#icie2ald zzsUjorWu9FrnV@E6Vx3UAI)ZR8u9;cf9+>zEr&1P`zt@b;{UASf4jX9Q(jRs2?$S# z*Z7Xds1$o411Q@&6JXk&jcghryMN)VQ0-sig)Wv1`v<`+`!TO$3v(9qOkDjv>QH)q z`GUtY{Q(Lw4k57R!~*1OJP4O;)%62?hK|5-^pB116kwTg5=M~;M_bb&!I3{6SkAk= zf)|w*N!G0bJXI}4ifk18a81svzWIzv=?NNFKj5r$N{CN393@s3umt!@JX>4SF#-kq zia60OSzDrP=a}(CdntomRz|X)z4^}cX}zc!QafagZG;ZFc#~YBJQ!s!csXVGe|Y;* z`mqoEXIjg_Wzy618s%12{GS>8Z#EY;L4+;kf^~*=-Um4!oC@!Dot=GhV0-;)lxaYV zEXS1T^kHDb>!w6^3mDX^BHMWZhlVz3_Rwg+Mz|dPAZu%xnR!&)dkPt)Ia2$|&JVne z&zyO-fse)!1fv-JXhkiPfvh|{Voo+tcGisA>Hr|-4~dMERO+~kl^u)lo9T!d4MCZ8 zj*b$TxYU6@(7pf$KTuoPl?rCFp)X0-lT)y|0e~ecApH2L4E)iYy z%k6?%)dnenh`=TerOZr~YCsnfDrrh%*cH#lu)oL7gt9(Ij>SqNQBLg|KSSekgbh)C zC95Xt`VaVUyvyGd*1W+*H$xO-ap=MwDSR2787;<80g{xIS=(%0`b^kjr+6n|1#1gI z718BM5$ccgF*e$eZGhD{AmK9>l%*RfoVz$hgRI>86QF?CXCIL4?HurFr$NpVOqg2Y zv$d}CkCZUlyGY;xA$Vm|0Aax60pCHd*>#KOF+m&zUr~K#eTWAw5wn5Jk0Ze>fb)Rf zbK}RS4FA(+z%>cjU*0^;{vZ9&ivQ^6%;0|-`!}?&6k)>`&?!{8^^JFGJj|q~I@=^e zb`q0Bh+`;&%xSwd8pZhjy-i=Xf&t2Ol7%0?5zx)!gFbum#m+|rDZI}E<hy#&}WL zItN8Ll04KqA_PXef7T^30yLOAr%846%NCABJeE^g3KoJSYGac_f&@!Kd?rfCSPU8L z$qy6LAYF^dqOu|rW)qYv4M@?sMH9kg%V!5(Wq~p1rWfLxUiean`!c;0G zTJZj67`$m9lNpq#H}_=Qwtqm4OeVG*E&_A7U#8vi6IP@|kHJ)zFyKX}jln(dx^3Eo zo@a;6@BRjd6{?AmHwzl*@Ch_7XUl@cGFxj~Gh*q43gCu9!~+=&Bqr-HGneY)=+#Uq zse)Kn3zsdJgmc|8Ti`C5#Q^H&W$tK@i?^`znj>?oA z*;^A={L`7l|CB3SY#EE)x1i(*_Il7^z@WGfGhmU5N&I;3W4p~K?O)EsuZ z?E_UGd~oJhs1hEl0JBt;A4QM)nU6 z3CuOU^V081NZ%j1j&fgaW~LkzTc7?6aL`rhpgIqE@K8&`SOv-DX~+NcM8Nc#+qFcQ z2L5*Mzm*mLnNKXI7XRDrr?p=LB=Og8@FqXAt^o1jfu>lv%r+I8qU{D zAI?KRo_WxT#ILn7Nrloyr_WSWQDzlV8)J@kuEH-M>rw-oqOn0jT& ztS=SGhhfM#=T4(a!UYvwf$7>y{5zYArKg#Bu$}q>1AkQLvbe;T_U3&E*&~Id^4m&J z$Pve_zv2ky3m_b4xs*0_Ak5*HiX>SG%~Q8}5%C81U>zk+OI&ASkAnJD zAI%AxoC*9-OWyDL(0z24%OwBz{YqQ(WRU?jw@) z#h&>&c{He005GUE?@wV$#&pLO^0%&`-kDGa&cV{;^YkXJ1rUtqZCs$hrDyjBkao;a z)p6(bAT1TLbq`KDje#KrrJ0+&x-12Q0kb5FNR9tQK7+v4`KViFR3~+DA(#>HuFlP& zF5n10*rQg=Sj2-33C^s{P1vp}_u;qEo>M})CD_c`%vP0}z632g1NeXad%ow){#@`R z_uu=)e={Gi_+RnAYkK3xD_DldxWh3EVY=aRufhhZIg?7!B@V^vqEZyRpf5?dmr6=N z;N(C|;cLv{sZ9ysS+<#vC=?gZ+J|P085T+ofpIR_GlP(tKOP@p^$;e@*f<3`{6w9J zS&BiwCUZN*UdMrpJVpd&ifg0^kVQybVl(0VHK3HR2izrfCs590B;9Sx7Yij4Se9cn zHNFg!B09L7&Dn#0t)%`TAbXQ32c7U)WG%Qh7!&HX3#Ec<~{~-BC3G}J{sR=2>&0s^yqy5`>Z7alf2*h&VNcDc;vwq z|6cX1AsX=0^T^tfdr6oLSLZE~_8Y(wJl% zZqRqg1D~#wfggar5oKwW2;nJ|M?R=0;@f$O{y5VS@!+^gG^%gtInx^_<*S@v7pDRE z_$g$$To!jgv+^7t&3#oDtg>BlKiV_P! z*IvySE!hmyuAyTo=bf{0?pyiYCdG*v&Gl^D$Vg#W&lGF}HaG7Uw2eEGwiOGJN>1?I zJL+1@5W<9Tmnx)pB1P5&D53y|UUSDmN3?4cKdC82R;-T!vSsVmo`9Y;FAf5rlN9B{ zVU4x~IVn=PJlAr+vX(%Oy;$z4Cyx4X7w|_=SS$b zsC&wTj@g(gmo#(M!O3W__uCiqKS)4Bb^tW9w~xn}IFU(MQz~ico*5^7XA=MSedK=n z=C^&5T+-lW2gZo_R~s0icW1~9D}+vj^`sb$ z2^GY6&JRTeqP`vQiTA@(pAvFOq7#nPf)`p!gBAnrzzdtPg~C}SF{g5J=Pga+xD-lU ze2NKy$&NY-uu88($j%V~0d%OpEzv!1nW;QOMKXPn`WS-7`0e?d!8*Mgo{F@R_%41x z;F>saWRCp0%gRM3E~E}%l=^4vH|dMx#WOT5F9MH{aZkH;W62Tak@lW$sxklq1bnB( zC*dSpT*PI~hDhkgs%jv!*o*w4p3f@&A9(aZ`nFTJCm;s@_fKC}{IB@$@IQTSO7|o_ zgu#!3_;{0zDE6N*M4HPvjanFhlAeo8$VCq{Pypff8>W&{L_m61^koH#yU^J)bHjHl~wzX zBafRqQh+8HGg7c01(6sOO|#CXP$1s=)9(`PBFk@lTE^#LOp3ceeXYry-Nv0n^aroR z6bQj-yM>@+eG#bG{Z=w-0>=>G7{YBhy;QDxCRH+#K^>wYPvRU$6VvC`mZ1XHiU&b^ zic2h_IwZF}w|-0myy-EE|DxPy9seKEw*~&= zd;bHS)H2=g|0nnS2YUT`zI%84$b4?a|BC-5{7>~aCZu40T!zEMO*oFtW(Af=nlMtj zBwzZlS%T;0)|a-4CCIo(DPFG%6n&t>X^ z82OV((Nq-P^s_3aY;&{;I!T^!Nz*0gHkCFRTsWP9f7*3;EJf=yhhj!*0!;%5^9w6f z)X4l{z@d=eWpFTt21OOD)?xQ8cX%9HP+JW5_}m{Q>V_G$lEX|xr{Js4+Pk1X#lSWNLRCQYy?1#)8lNhd-@--Mpswt_?8t$|zw zzE2mo5?dpjE;wR~&TUXYUd(dNudwlk*FrA*Zb%4%(}PR;8|BWpO){B50&$jX<|!@6 zg_gokqkp%B#8_1A>pCX2qhD98IA0c;nq1(+GdsQ+NyNP!g9|Cvy3#h|C5!uy`6wR( z{DiB>ihscW^qAml?)p3Qg*Sf=ebuLaA>DM{jdWbgH0z(2n)V$a#@2 z7*Oq+!^x)?Vn}j*Glz?+%UedLz$Lr^zU$7H%7;V%45O#0Nw|EK<;nq1N*xDKkz^R; zDfsA&A}~O3eD~2n&W zQ_xl2=v)PDwc;N;4nO^|2i`$H_o4Uh5`pK>f5#~ims(WB5s(9>WiAU6a+8?XiW8|bvko@QJaq@k`jFMW0$>cxO4S>>ZXiTuUd zE`QZGH*mBYy&g?-k!(k7n}&|$2c~=T8R-=7a^z7*X*8bDZt1eocIOISoiA6i1|PJU zC3%_@_PKUeRK`Ua@CG`qc5&t`!-N&Z>C`kBJ@Ci}vtJe3!~PJLMCeE>{$&~ePuuDH zi;h7eU<3aT?FRmbKlaFqf2V!6@Za@u1^C~cx~C-oOc!ZjtdS9_wQEKwEU^n{t{^%l zau00C9)mfew7CK4iauph3|V7V>IYdLlh^v6PUS;f@ncksT4=sT2R0~iMrrx4rpOuJUVdh z2iw>4rN81f9nfe1h)#bUaMcFHV>bdGv;Rx88z|HUP;WR022VM6Jw59wPp4?T z_j$wl>*_dIMOgDd@Igo`m z&9Cp(6@ckBfG#;thGDxEv`64-JY^3cXN$Z*wNp=&1v^kU9vb!^Frs9?uM;N*Z*fV($88Sqkd7LRk~ zKBj)>qy}dS!_o))bjau-)I0rL#p)7(C-|!Y2mzM-r5JMLN0fpH_=&eu;$@cO&3y37 z1J!ePgURPU_1W~9yU$y81OHK#DKWVBq5J7)fAc-_ATqBSP;bf=|Cf*do36V+pLOH2 z=p~=@oH-d-O3tpNOo`lNuj%j254>F-e(WPF{)tX4{w1|1z5P-3CbTahuh>iGVqiI1 z-Qx*BBhZ{n)skBj&tg55vS-NXxq9Ma5&Ktcn$QA}=PR3G1ny z1_QFTYnz9muj%Zj2FEdih8ZyJ1D!f1AE-0#0&xWKTxU8nXXw7Hg&xQ*Q(5zZRfod? zcy8rx1IFs)Z8mN;s#_?D0=VKE%9(gc#nD=ojVmhiRj#uW;F%*3?Dy4*gDiVn7M;4@ z=r<}t13tJtEBBf6p#L2D!keCdq=U!4q5}%O`TqWy_Z9z-5C4|D-F*Eg&Z{>!?`{T zogXfo}?1NJ1X56;V!mASdphPv05zdN4Th-ayKDyP;2#8u2d4={P8Am))p}$8r zJsq=4v!~gvFa4m^0y#QQwdn%D&7TmI!yT zMoO&!r$JT~GN{6);IQF={9^xlj6(yFacPd2beQ?-WLVHcpXYLEi82p)g)8l-1_RTv zF1s$!EBva-(@ben^rkw%Qm_P>9aP3m*g0)5BYel~641xzEg<#-P6cwapJ(MA?Fa&S zU|f=QJlIV${6Fy9K99calRxiCo9!RAOe+G@qhu`+SnB%m3&0XRfPK|?9etQdptkiy+fMU#!@z`!1pBrC=E-lz&i14GFaA*iYMvGGAJ zYt&T}8d$__nggPQ-_GYa1vW-GP%_CoxJOHd{jx8`OD343Z%^sb;hnc+%M?W!C5>xy z_uvmqefFCJNCZ()-h5UnC>Hwa0EX=*A|qc-i>(1GLH7eP6NcZ0jYFSyZJO=>>5E@- zY@a8$$K0lu;QY|;&z>$=@xS8V+pYM&V*D?a^jiWZjrQHiI_(_OcP@l(v)7nz`y>lJ zfeDk}^RS(S-06WhfD@ik6o60k!xT0{h4^DC0?G{~yOE5(2Zn7ps~RGVxIu$*`gDj{i4c%I+zVD5%9#nr;vpb#9=Xv>P-1m{n@jll}I5q!b*O;|5_h?J5kPuvj- z?y2ExbAw4=U;X3lF+iydL5JYLxf4A%1KaKFbzFg+S%Y>grC~;FnDbOfT;PDI8g?rw z7&zo2lK}||I6ye_3u|iUx$x2)gW%0i!E<;YfDVEtoLgClEQG3AAw3?D*#q? zrr%S>Y;8nRuFXNqmvCVgW&ks4FqqsgR`vXP+g%tq?vh3nQ`(_AWk4dX(SFY zlruntzS5qMqvX0wqrL->*~UB%reF1`zvtL3_aC-Qdj$UOFZ^qI*N5(1@lPxMSNxCq zUdDgbCfXwp`V{ZYKsVBZYA;Wc$yPdWRUn+I$7x|>rpfo5d;TlGuB@kPE(@!RRcaaB;=wF}@Dyk(ghF@d@vVK9|sO%JP@D(j8*a2r? zCazg?%hbq`jE-SOa5gGGLRr@6m$7}K3wH8Z7E%241S{VI{(N~1y$bq=>nL+b13c}L z;PlojW7T~@@(dv$Ud+I48h&RGV1lYVE@3-_|Ye{L6OU+rNxdpVRGd;?!I zMF9VF{VC@^j{fYkzmmRemjGO|IZr3GOz$4}qNhK9-oQ4!OW@&4A6@ZJEB;sf@5etT zF+?ak4AS5yJmSM-GAcg)7QO}RQ@4T^{euC)n7e--eUj!Nd z(D^~H1IxGPjs2}*wxq{gSP*cEat-<>$_hYP<|+g5HGXGLWqVvCJEKqyNF6PsM?o`q zN2h@KfY+-!=S+MQB!oJBPqZ5t!&bFUTJ{2-T^_UpM%IDDA#FP$g>SCsuq{#NTSkUs z6_x6Y2koqu8}MUJ4l@|{tzI{Yu+aF$IE7ENh4FaP^%vxupZ6#EIKMmoO3U~B@{iFE z|LRZg5`jln{L_m675_c{!+)Tt&f}|49=OM=E8xR$D)~4y$rx}YQerH*R@GJEM2GCH}`61_RJC0k?QdtntX8IqHmO=$~RH3 zcRe{jD~o0XyEHi%`kR@z8)8Ye=mdpG0|Jlb8k`=;$Xs}AT{$mE=9Z^CgTCeYFXtPt zeF~k%GVNpd{F^>|e((JBVxg(5`0rWoWLWWkCh*Vm@VW67in(GYF&(19&a>9LwSBImD5NT_d|?~%kd zM?x~zH!t5)lL3f5;Al{jj&3+ur^gD6bPWikQ`Nx)!x(Kp#kp$d^N9uWWdY@@zss+6z=D1*K}LFMP%e=&Nt}k`sHs|8mRp(wc95 z$3NYDKA118`1ks){fhr~kxn)K7eyKMLp?T@=!JhTkIVabiAqhE4Mtgq=U(u&zweGK zcNlOsUwj%dKx3z`nVaQ^EHa!Oq&C^nV;QAZ#e0*O332+cnZr_`n(hN`=G`s5vP2EE z1inR4oH`AYa?ka+To@IQu~zl_V*B{u11|JZ$4QYz(m31d3;Iv(m9IF8wSYM21A^JO zv>-Ie-1U$6>nFF}<;FdTs5B{}umZwoW(x56=`0 z`5bexU=EHOHLZP4W*7UFaZl6PO?+wp@D=KPUjA4r2W2Qq!S3j^AH^~0Mrlv;I8G~1 zYAOVaXMvW{%OY>~KJAuB4^mXA?Q`}^HB&ciOuH+(`zDn-x@**q1L$MPK9XlGnNw*e z7Wt@Y>OfH)U6hrfUrAL&`q`8Rq{Ke76QP6C+ClMnB=8*rBd6=h&NB89rouaLJ}rw+ zga27AU$jep{@M#(L0|RE-?QR>#lQ29RZcVhFN;Gp0r7xO>ig`94&*86l|hS|NU2+n zc%Ay+G&QLDcYoXMR#}py3iI*?aoXic}!{lKiez#@l4Nf9rlolzaa&D-ZJ}xYV>FCfL-j?Rup4 z_>Fb3&E8@+NMM5vEu`0EvkBhg0Qks7%pw4!Y`{%2(%5*EWNrEd9V7aMM;ufF8Xf62bLPONbb74UVF{2?$&4WwagOk<&6dIrqn*g8 z`4RWINU0S%n){NiOiSN?`E&l%nYrhGm@?_)8$RPJX1z?w(Te||yyBlu75%Eo~=ty4DK+i zMhYM@!?Onb6_UoJf(C0g;zmE-zQkl8&;X&JnQ1EcIc3u3%HRmDPbPEJqMrF*PjEPV zEFK-%sQ2-#KF%X9CIfaq2p6X^IUs4RcxT6Q@ggWOr-NI6Sw}Jst5*(v{vnv-VU_+Vq z@D0!Yievj)->Y4w+ahMKJo^vv^mDl@{#X2;HvDrp;blBB#rVLB)WrE{(g5;6 z4Zn82rlYG_-Dw50zTG2pkR+nOK5x&(4PT1gF$yt00-W=SDUAN6a?j9-GQ3_8jI!XR8yA zrqT4CWp_v!XaI~_RAXjl3Z3}Vpxbzk*&G7YPL^Hbbuj}QHI6`FHt?j(&Ut{#z(L)k z?I@r3wnX7(XqU#WlqEE^hqld2TcD;CPkRDfS)n4uUfkz*lci`Kv_f6&I>u;Qw;cve7!m(PB_@bMiKkI3Fcfb$++E1jrdBX!}3;V}DJI0nFxD z0FsWo7|gpiRFx7An2xQTGfn~C!ra`>6gGnx>@cvSQ*>qZ0U}&Us4M{{yfK4sEhy6+ zPWkS^U$aMtdITQeSykUsKdtOKF5lCq(nfhX9TW5f&S(8;YbszJ*}a0<^=Xbr&<)tC z^4#&MGR}JOz8S+%6!TBFiKIZ#$za#m1|I5ochnGNIY5-@t$457&2FEp^3D(5OK=fZ<_S(`GNMn)fCoz@K&Vk5z<^P~YW4Mf%lbM=%RoaMDoF~K3c}PE z$P(FJvZ1*r+dH3~t}>B=AyEp5ri%mukh9PDRAmS_BO4BtRiAVg?L#ltDN)j$1Ha5F zQa|VuMF48A6J-o61cGoN08+uPkZkCI^WNI>T~EglpnqS?Q_`jeLpL2$)$f1_U^m$?`ECiK zb$PCv^*~>Lbhq?B?RI~n$~5qQ_kC}sA9>(y`r;86K!da-+Y(Wa1wwm}V`kcvH{H6J z9@{$(WlC;-=vSwo9gY_Xt@x)E|8#uu-wC~NieYfBeyf_HoNQ(Pnv>Kc#(&S3(vj&^ zz_0jycPzccqdQ^5L1}@IxbA{un-Lvkwt29gOujrUOvM)5RcKB~S5Tl8@9Dqy&jWh9 z9Af!;=%(u7dIe)HWyS+44c9mr@NHp`uZK3wZ5o~Kj{QtKf9 zr5%s@1X--_Y3ct@f7+MMFTi;s$`Ae8Pto6g&-c?W{MN5nOwT-t(B&4KEj)DT5&7BQ z_<6qPq5J9CpYSR3o`I`bK4Ztj=RWN@^9slGBB80Q_@{mCR{W26dy??KWLF;W!!YS( z9dMmDIgF`~9{;iOMHC5>$~LV4OkcLNmG&-U+285XwR(OasX0Z>tUT*MI+&*L;C2H+ zwj+>99Z)*92J%e7XtUD=W^ZyOMxa4}PjG{C> zvHv=n98yuk;Vw{vagMhV2J3^0P%LSJoz-XDF|7afZ|0@MD0JKyy$=U*J0%ZmT5toXmW_#e@& zx1Ep|TV-({CGb_sGxLt-lYoD0+g1Rqp5Cr+83W~HV85Nl-pL30>|8cA#oA*8RAfFc z>G!kuGX~d2`dVNdmy5hEd|v`ht+%f<8u;%ZEA067PUh!_d0+pdiv#;|;)jOc_z(u} zYB1&YOBp^ZgxZb9<`SFs!*M*I*V!fmoe#%cU#4I9`^IN~#o>&18Rg!G-%o%29sh3( ze5H7hRp2kl(5W~1W4Q<0^f~{S&s%=uJ@ZPy^dm-BvrMZhzweV@JU`7a|LpK%kF5A# z@qcXa->r_%gYo>B#v)y2eJduzYWSW+WmKL>{Chhtn*a-?bl>6e6>yvZ=mfI-!;|#P zXnKw3IHSec0Xm2sGtJM4?(KOrLm)bk*XFO>WqSv<-Qy^S>6f%W+wilu-60dZoQ3Y2 zU9>($*+RYseO@M*IyU)`GrCpEvaux+aEC9-k6r;k3;#M``%37{oXepTye$!p3YbN?<<#se>)J_ z`cLK_wp_Ljt^)q&6#%U4%U0sqf+S0Dhd0x&P)1 zRsK=--OY^n@K7*W+h6I67Sry&PVo!e?6bs=`~S{IzVPN39Qo4!H1q$f|M?%cAJCz( zZkA+B=SRUC&W+leE*WS&eCbj8$q&49z8!J#vy4U-vxpz7_wp z;=l6rWZ@qN-m&5DcB64Vlk#ZmDFaV4l%DwD#ndMOOy1iwb z0HO@mB$%ax$Pa;}eflS5xv`JeeeR!|XUIoYra|_vzWpE5{ku7$ia}mTsy#C0c^%VxsgZD zoa{XB&*YhUU8I?eC0OWqW|RW*1P=e;thZt#=e5*#9nsi<(B3YiH1TbB>nH#PVbw2J z3*_t7N6?N)A3tZEs*Skv0Xz@0;Hp#e5s=&J+xh7i?mqWv&!wX((~SSMZ-2u)m@UoR z+?Gi<8OSwwCI6w~0|OdXrw&er|DXHNee;UIQ_fvaw|xB7-5+q_+K;C%|Lvcr`vV@} zhcDSJlNJB%+KPXtYdszj{#~a=Lgs%$zH_hN`u_BN$MoJ)v43^kT zh=Fi;zs0VKp2x&Nns)ry&0;ckA`bdcg@~Vr3~g3iIJ#(kf{Z9+741{R?!P#{`sp;F zf0VWIht5+SI3+zZdn#?*jTus<;>=lg;8XI-ipzxU1oQ-j0oeN-eEyL(;7N-7T@&P$ zr~@em$oUVhAze}41OiOAYj_0W!lRYxp8vE<{wT|LzxPMmD||=zP@VZ8L=mKF!dwFo z@}K$ z&U4|Bv2WAq!0zZjR1=0{hW~Rf_}aDt5cdb##+sB3QtE}kZ(W4WF(&#POrs!aRY5Q4 zahvF~wu*XO@4HCJ`mm1#CXgkR7Ydu}p+FW8TDLj-k85s#WDv<4jV!3(EfUwE%fRUz zsUE24&7S4VdTz#GaPUapN|MIo`=Ty0p^tj@pXhckfI?Z2sK87|HE28{$b(mMouRE< zXShcswP&Xf{d=H7pL0B_e>-19DG8m*pZOhMdZfGKr$O}p__^<;ZuV!qaQK+(u7C`2 z$#CA=P3P5K?3bYqF+>t}95d(5UD(gGN%04N^{3`X^=|q2PkzGQgK(HK^=#P%g5SlOo%3!~ePGf6ec`gOUol0}R_N9K4V1 zAI|7Y6*^~WG7vg(aw^VDbLS$Ah6#3*BqkQBJqG1U26zY7#1~P1A2(4iPvW1Q|KvOc zAU+F8d}caXE{1r(Zde|H5ok(v5H-^_gr%J4Haqw2n_TuRvN<{zU149ze;B|u4zz?C zLZ5@3%$$R-zundKn`|o88L8vf;s3se?r%TnvpezGyFvJBmMIaKo>-U?v|sq} zuQt7|_y;m8{vQwiVNiB{88F*R?E*p#0Z74sehl${?sHx-B>+h?G}0h`X-+A2-%v3I z*->(NV6+&LQ+=qLz!;7*U28A8plZ#rVVq|T5C8;}DmzD{tvN?bbhS@5BrA(m>5H1%}_4Xs3=}zzUw;#cwk!`>)_ZGvYl*l$;gMn%kI54>K za_~<54DdhwIMMVz|KqSf;J4p!6Mgw_|DE%XAKf>-Kj6}%rN)Z?(f1YqU8RGuH*Od< zTEG-0L*7@pezoy`?)g&!&@;x-*!r-4ogh=Wik)h1K$cMn*%B6AUf~>#PHtf*>BN5ByoWc)nSSOs-c9fP;C=Mj z7jC(#w*{thakmmMZPuJ_SJ+FHR{V!3EB@)w`0sj}$1(kdLh?J>mr=rBjw}9K0x)8X zdTEnmYY`f0rDx_)%A0Vy$wt(*9*%3{a_G#$>mjfbpXsOrh&BM&CC6~AF)V}G(vN0u z!2%EZ-Cu;Uzs^GC7&1S+-guKypx;|YfuUZ9&(KZyjp@XGs@>{WnV7~th}UWf-S9GR zK{sr+yEeV={~Mq4hmLeW`+;BnNqWn#znduqrW}kIu!foyAGN4&SNdTX__c_kl+rq+fmb*Ox1=_+Rl)J^uT8+LLBuykMfm#2^x^ zV~zim0HjAwd}Loxb|J^<+Touaw6N#@(OY*}Nv}o7o z?C`R{_@M84%4Y*i-8;dTfZOYY+#%sy-2NT5XYXU2J zSnY}SSAzd(`F)q<%nVIGG;}q~ln8wO&CjEoue(6^K74)qapK*I^z#D7v!i8Dpu_uSa94`|>HhoMe)GS~`yFmLcm4cE!K+!O{Rz|l zfT=w2$cJcpf53|W75_{4AJj%35{8pL7U{6om1B?p`6&PatqS`uC;5F3u@12FjGnGw zwv)4?E97!lxN#}6)AfkTwMr-wZm>csXNochsh>!7$L|;5+GL{C;Pxr z;eXm6F#X8T1CM@a9)z#<{($L;h0nd|xpRVY??dge!4>~2{+E&(>CQA0_^ebbMUK{h z%AIuf?fB!L|HO~})%JMjtld#^#LkfO#tS@GCx9%}mplq^qHZH%5~d8X(vGay#R(x1 zfOy<1BN?DrqdAWraR@Ih49>)PkNlp12tj|cEK^kmv$h!MssgH{sjl~CH^J9u@yPQI zTA`WhPrkg}szVN5-I+5k|FRSa(lQny@1Zvg!*!NW6T8C}AUoS-ddbW;KKm=^D9fvU z`ftK<@OZoZ?(|CjA%;eYT`e&@0I+2L=0 z=f9wPKK#BF|116-|AD84%1JGg>|4#vxLW|PW7b^nnB#v#k;kwzF6~qF%QP#9mn0x@ z%}r?Bc{146o*6_XL3>hzpkq5B(U&DfeS;xGZ*bNBO>Ky%E|rl`=R@{dCNYL7glw5; zG<8}|DZep`1ND^c z%qvim8FU5+&M#bNltqo>w@7>E5qGj`QU)jX{?+wR zruLuuQ~TuP*aXag!T9CFdow7of0XReg1m-}}GmN)bFsL}2 zLQc$<2iu?ReTj2U*1*m7@)hfg+?hkzb^sb9KNJ&1Mm#yMS$Kl}bdCUnmoF>sKEM1^ ze%F!y*v~ZZfA@VqY665lq<}h|5qBaPgVrC_bN!m~QR9DF z3Hdue|F7m%k?GdR)h^SU1pn6O{W(wkR{Wn`{O3_4`eC<)CB-8{o0l-ioNas(@PF=e zzUGVXKp`5znKbAXIK;FC8`&kMF3U+lC0%QDaY>H+PGcLy^Cm}J=7)~eg*h1^=r$_h z5TrC`eq2&a8dP3}9f<}%)_}-vChrTiRzZOouMoT}iF13Gg(7>6zU(_H9QhzhBAAZZ z9Eg*6=43v}v4F+6Lv_&53lsi4mfkmRvNJ-V%T{eLzLHAdiSI=03QA&!x|#IU)=! zDb`8Y#?kd8;D5RgKW!2`4v!5^<+JD43cqlEQsBOar}qb}_&-bdw_Y4U%5?OV6OGo2 zeT?c>B=oupb7JtXzXnKd{qP&D!tBaXy2>WI^AdA%q83E7x(b*x;80mMB&kh;c79<4 zsC^V=)RK`TROMK&>>%8_BCT^YE$d3d&aqj9XkZUOoN|oT^yDJ=kllS34wOi=O^Hm? zVG$r?n*QCWgUmWgyhXjBOAuDrfsa5pb0)n~ue{0&?`D_8_gDXp-%m&RTH9%0``hpSUdm}b^>2G~xg1Z95%HIX1o)+M zJ08efR=hYP-QdT`jl}6ZnfSl=!|$gb{FR@Y>s;I=0@rNL)72{W{($N4?%({y`DH>Y z{!z5ki~j}<#RpSftzk$C3Qy6Iq{L%>L^HCu6NCTV3P5`dkiq&AeTf+s=HWbIh@ho8 zCkgTb1G9Z1zhxk{dAiJZlaL)3ZVItN4Te-4O(^B)6FZXfzm z8DUTX869-dJX5wKNtri0Pu9Ypu?2KZy0Ya+9qHzm{(RGO{tz8y`A5@Ze;mh5gCsN3M-@#@LP|MVuopZvf(=!WxG|FOaO zXNN!Kchb{$esRx3@1GNa75}Ff|9!#aN0R*3$0kV%m^Hta%-2c5Kl~OzFE}xx7#{0G z$7N3Jpo_Kcg(CCxUi^^;Kf`0j1^I#gOtlzn(1~N2&B(KVN>aM^$JmCeqMHk8Kd_L* zsI|~uI7bh5PW)i9lV#6*c=p;EI^QHodJ+Q7Qw{P8rs~*4;lxc=NoQ>1h-zv8dZgjJ zaL(vacH=*vO|+yfA$}nlYpZtKl1*&_1-_~GI+0g9oJD{ z62TyoxevL>XB?_4Mt=$FK_laG3BTCi6OaGtw!qK)`n%^_1D|)(bLV8>YL@BI#p$uZ zX=PwaP^_%@$1^7%|CvipH8cM)c$y#AgvfXaR!$cF=RE+xNowpnQ9((GZ5Vhhx#b0c zabS&Ey*Wl@j452sOpMNAOLN2+T)2~gs53zGTFNFbpq#k#yph%Yf_ef2q3fE11n7iH zXyD3MOGxqxM7je=eZe*YKrB|`Y)_=LVXy(^AYydQX4Z{>$#iXlmHcI?lk{F!(j~IHN?% z{ltfaS+AR*j{~*Yp$5c8fT`Y^yBhfa$YYPvzuDaunBJZ^-4?jvD!*2Ex;6CDPkv$h z+2M!oU-5s6@IM;rd;U-cPO`;7Dxg>9irABa|8@(&NHrt)=2UbDY-&ot&gTV;BhUmE9fBG?>A9>%~=wsW*<{uimnq~5l&wJW)=ar&~ujwU6EB;SD{zGil zt=>{85;dBP`1OPbU%Aj|6hoXO{GWT??Yakm+&NeZTQw=ejK!3WPTCAc{=+^wLrlW5 zU_Z_Xbw3JZ^{ayIzTNNO0lX#%fcce(1U6(sB`zHp@ zOfWYla)1Yt4E6_1{ZA`KkqA7p;{Sx=UwMhq zUCBgz=R}*64x4ndu8aoakxwT6=cfQ7|59eap$N}wX9C2*rpb948T;u>Gz|BS4fGi$ z+vDhhS|Uo$2#Ru(nj%{AFrM{?teJ-aPtgWta6TemC!*-DIHDQ2ct)0m(3$;0;Ec3C zM&~9=?7QIYn}Ng~#ldgwvRyejQTgclVWOm2b`^y-(mhK~Vh1>MwuKik$dm^2H>R4& z2UAa{bK#s{icpE)kfL$LUtjJ@{JT75^s!|6Bq$0}aDcqFK*#mW>yD z_oU%}z6Ib0F=jTLjmn(}giJZ8gM0m`zk(sI$m*CRxh)vqBa{nE!5=!V;iw&Pa$q9g z3)*+%w1S=_IVX^A9J&|`ok(gB{J8ZJn4+0w-__Z9s2~mz``byRkDq$~5rj7k`yL66 z%LD#-@IAK&{up^^eW_ez8mIxk>McNxKVSlN(kIv=A(A-t2YpVTf9BJFKRx>skM7s% z9++Nm^PV3FFl&D{b8vrbJh<<*YZ?S02%wk(axh$+ufZToL^&YNd%-uHWtYyW+vXur znh=nWA^snDSS5Ck_ASo;Pg*tf>_`i8Y-EVo9E3^eqr15O8MLxa}PR6y^a3%|!0lQb3j+ zGOGLO1dd7Uted(X;)X%`alwHp-SzgiZ37+nRR?IaNfjsai+aP~?w%DGeL?*eP6!;P zxsRZ(Dldsgszx32>AXtxIe*2dLNscac;@23WOFATD4XjeqU!wE-*b=l zvA@4^_dlW!e(WLSA8%zg-o)?={zGkc)BIToc~>eSzs-Wu2$2u-z~JdIU}-ZPoDxn> z0RE?+9scPLyl4J;l!@GxlqnJTg6U_6=i37Bn^px@{Lf#HC;p8YA45`>ko$4*@tQU# zE+jMmCldd#39u&`_*X5X5@f^-GEdQqg#lwRM*vkyp-Wgd3(s8o81+kp8Bc%RZg`@@ z5niXF57PRr?Ys*%9G_K~Q-v8|-Uw5Q4$LX=ZfB$Pg3n1q~fG{5I z8;|{!C}smhWgy&;z1BLe>!LlYF6I*w_X&v>@yXQ=X515k|LOkw-4Fhk`L_jbIDg%| zB5*a!bX(vLe#-Bf1(*_nk8Urm_y-=23;tVw5TpwR8Re~fN>8pIUG z07uI< z!TL)&9*tBd0RL@&z4M*ETFJ;k06osT0kWt2$N0U4I}M>KNgJyPf* zpt!ey#M`jC*GzglB|SFYpr773Qadi~n;P;9D4@=;be=_B#!L_(tPO~t`ZIH+pOEF; zF8TH7rezkl=T18F)|QE#~BI(pS-ebtc;5dZStAElr9_4h!x;fppqQqOTE zq$TYxc!R%ms)3*mB?eFiJM!Lu?fwNY$Yf6*{->Yz{Wrh*pXA}kKFXi+l$(yt{(zs^ z-KwzH3a7H-pPo$o=MD(QV)mtraPPPkg}lZTpB7yIWaD4o1emWHK>bs>VH&4Q>cY?) z^>)^CmYF7>Wh&fZW*Le_Wy4kzPVEdFgwM9deV5i>t=~Ik$W*g$U4WUIN%lg2nFI7S zG@jDLmwEWv${XmrIwu$Jh+oFy(jOIML(D*PV%JF~klQN@ROP{II*nA=ii(feH7TG7 z@K>FfO?utprZy`td*<&x+Q$&+a3hLv;_>I`n+_l zn|ylyV!k*@W%GoV0l5* zivQ^EiN^nOkrdw(BpCY;s$+o1_)~&^xCP*yP|TUxHZg=z$ank-)JvTu$125`&S9iF z2e%E4dR|Qw8)1@S$H%eWWh6WAcG|HaBkFLnA4gCmk>0YoU(AS;Ufhw?xqL!n!7SH< z#4)eF2hPJI&IGUg%GGE=vqDJ9~~@%6m8aSLsgn3-7Iopu&Pc>sh4nO>#ORt z`r}ll0Q^5b@4uy^EdTJo{M&gmT6k9sh*Eflu9Juk6do$N#kaKCR6B$ot>wI(~JUuojfXzMi5l6hj{ss1x_oYG zfI7~+q0UHULs@O+LIF65*0>|Q0)k3lG6?nZ_L?wf2H#Ax4Q_e?Of$Xw(|`Yw&Iael z{@(oquA1s|;m_#Z853DX(6cMAhW_f;;rFP?9GsAP=Anjg8u;c($N#iZ@ZbO1Tj+sD zKXldi2TX(il#EP!P;7qy(Te{k1OIw^IMJ>6OPlOVVl=`^-X?ZB@UOoGpoUOzCqaGC z3r05GKpDpZ93c47>B0Hi1e|;jwPWvFq9)`&=$5^K@oH9}Rcy{Dz`3dZx6Ayn26SFKQI}eZpGEsKKmfzDj>ji%EyQigO&Y=J5Ktev-Ahi`6 z$Wm@f1ADoqogNk2`Kwmb)!wGox7PPd#_zN#Yf1o)vi#3)`FrznZq^C8XoeeGO`;Nf z!Z&2-n{Hp~mR-Rfpa;w~-6t_%XZ;aSq|_cplv9L%``O{?+hM z+duJ<>xGkuD<$A+M5yJj?#8VaB>}htiaV}7OG)AifC0HFOX9e9q~NA5ot41l^w~3R zr4(QwbPUjk5ZvYiS=)8VMm5t^=!7T(gP}cz>pDaK%dKC1q%*%az3*=Nk^Ao+`gvf932!C& zy-gfULHqfZ6FJ_(o|J+MMx!)lIQS*m#zM36OTj}P^r4Sai2rH8ZI2CJ{rv&cdjqD& z2A{646@KVrkF5BA0`O0i<39mC*9T!zknxyj_CfeG;(vY-P&T+nf&z0@cv!@l5%f$B z#{D~u++4K&%-{HL~%M-35OFT{xeqG2{I@J6Sgog#l2ML zC6R2|YxAFy#S<7x-_0rva*XiEtQ59SI|Hvi$jd)huaYhLM)>Y+>O)yKK z6cnQ!=$b;NfMn=Xh*HoX=&ufljI#ysH|Ot^|ecESS^~VOML}cEa zx)X5Pz_{Z7=!Q$Jdqtk}}`4#{I(}bTjpOiB9fC0`S_#gJzYqzi>s|$Vrltv+2Va91hO8oqxBkq$pvjZz}XC zJ3A94r|7b$!V7i5XslaaR5*9M;4)?EXP_gm2fQ&hDl3116~JIVwM7ck+9(8 z$rilifN1{IC+F-M&m&jc+1XmMw->Vo*btXF zop+*w7s5d^!ll~B=-}+I(je}4LpOfftjewhF74~t!T-Gv-9N7gOdIo##m^4k^jv!S zbr%W|>bV{$US5&J4T~`%}B*GA%ep z6*{iv9|h5!KMDAUEDU@R&ek#es% zT#$o*p+@50bv)_3z86~a-^C1O;TX;=wdG{n;u}CO%{H{YSSZ2(QA&DQ2(`!lrkDO4 zWtkrPvz^-xsyYZAwy??tw~Nwc@Lw7nar$bvp4f5eEk-jF@}R>VE+y=Emhk`3?zX_R zKVW)n@P>0&e}BN#{~!F+-!=0&B?2GYKGrU*_&*f>ofo0`{S_PDEMqkKmPVc_;c~?1 zDaF4h0PT9I(K9j@9+buf>dJj&C@O%>IH=A7knwWvPz4P*ldo?b<78-F2xfJ;O8MqQ zM!LT9kAf`l#|H>ydUAWXfqhD4R^>$aXrTq| zl?2M~Jx;*7{WJamA7v1qmi_AruMg8uyfv-c-J z*L7KW7`E0`yJ)&W45lZ{&;yg0kpx1>4&4nXP9y|M2^wgmST0MI!I>%!WhqXC9H$h; zl}e%{F3E~j2r*N(5ke{pdH_qz4Yb6dX6S*j2ZnB0bkizSclkYMui<&t-uL_ezx%xJ z`+fg+&;Nh#z4x3wtl@dqUVEPjx-@CgZ>k5fJPFLXZjT-Rw`)6o^f!KXPxL&b3m_dRRW zOEytKJqw}=0ldob5^t61gGkQ6F4$sPwq#MBP^aztOP~Ll`eh&c`Eum;SAO!F_vP3g z__TB#`& zzdqol&;N{F-k*8bFUpnwmvtJ&dC-l|o*1A!`Mn>DHro2i)0O|H2Ls8M1-JjtwttUv z*oGCsNDpqUB(78Mu=i5+wj^WwjVm^vzkh;ll(%JP(bP(Zy}tn_1i=3NwDN+j`UUyV zet}QZ>w%HZpy3Coz1yX|wjyRgKJO|}sFZ)b(Rlk52vyxeCTfPV3~wyu**tZgk79q> z)!H@74QF*<_QKDXBe(B++dtXfLr*egIBas_dnk5Yb+*Hr7Z-vLwtayY(Z|`&*)R6B zMhEm!r1}pTroJ9S{>QDK|NamEfA-S@_qo0B+0U21 z^cjC{?Se7UK9|QhV0uWbVLP48_tSowRkWnueH$08i zH*8mRVoRROS7>R(6ycI!>>52=)hjJ^W6QxDxV`qZr}ck z-#2Fe(T^gT&Z|H)1}T{bN6kS75=3dfvf`48Om?K?akZJy@k_y}_iu~va^*j_zu{oJ z3*oh*aFWzMO$c(Y_B-T`%&(ZShqJuDFwz1;#Qu>{x4?hj3@_*+4c1q}f`9ptAzWpuVcW;TnNCN&$-mP%ufAdr5 zr;{KFhne~4<^Zyir&BhT@G}S_)IM`H}U|DZiUwT$PEx9z33JTtwx0t1* zp(X=Dn`r=*>|J1hmJ8XYalfNUsVrFGzmUZH$Oab1FB=Lt8hne+L*22i*SF9m_Om}{ z@J6sSEHLU?*tZi{X8t6(NG55z2!g+U3y_P+tf?yo^=LbE*k=FRyVsB0zV40x4gJQz z*#l0`;-?^y?l;MS6!bS)1*EF8|5h#bS?7gJgDB28h7W3xr1O*pgTj^n(XgyGB0Wv46f0uu+C?7qn<0BCGu*B}OL0~ui!6QmF=*rm*>G>b`637rE<;*@_- zhO$B0#$~|3UiF*Jkpmv&w6q&G+S_RW0>2Wlt-MY$db4>{Mfx(IV6al1WKTR~z?Pet z|EJ3fpZz>Ja@&@7L&nVc!@nlP3-v!$M#DCKs0^1gTyF;k)3j#FEE&2%Q<;iT|3zf^Z zTV=>#$9;{@e~%k*6gtof*vob=$tCdKbC>h~@M*6&^giwF!oS!3=Fdf+&b=ovUD%ff zsUa_67_d}j9P4t?*ktGMbsl@LTo-ZoMBA1B)b^9&|66|hZTtHLZpzswf9S_PIoS`` zHvE6W@BOI#NrsOb|DWncgK*z(@O||8Sn>b&eCnTl`PY)Nn#uew#CDFLmJf9401h0p zFx>t;uyGApnx)A&HduaozqinB=)D|(*Y(C9m8T{|wrR%u(1A~-NtHMOQDJNW`U}Ej z|Mnnxo{BUw6D+e^^|v5my9jdZA68Sgw!Zv@pD&;N5uYSSZQF%^U-t|DaDO2S%AWoE z9-U>YfXB(7F6E~-tuUst3~1^=;p`^PYd|;D`Ru zmEFoZjHOKhpES&C`fOPxAUSu z;pmb>_N;Rb4zhQ4(k|5ctm7?0i+P zId&Bgbxu0r*qZw`o+mz)&ps1JO2I$LAnV_7ppNUfsyO72^IEp3gXHb!=R%*OpZJHj z{l$|WL!OWs#=_blh^)3GAnu$nWZBP2HFeDPFU7l6P}T9k4+>VoI4+v62k9&S&1uZC2m+NU-d6# z)Mxhx5hQ|F)V;uu)z0x$LlAbVqZiwlcpx%mt+bia1!G&==L^9}7vm4^d(JJ~_V=Iu z)VF{Q$E(3`vu-CC%=$J3N1yE$882))Y(lx5Er@IDp)!EbXK{VavnDsXZ0E}V>i8)B zZ>I#l_Vr)CuQJ`{wsB*7BIYdTygjP?zqD=ooDC1rZt`G1n7Oeaz% z#K>&U>coc$1A%j~I6f_JU>Z}w24#RY&x=_De)jJuV@|YD_SN#G@K!;IongMO13z@y z`^&3eFFW4a(MvO)A-^_fo>I3}ow=X+IQpQ2m(JITT#$ckCj?YWe8Pvjb+qggn7PzG z`YXzO?PvZOIda=({@ZO_t6%mLudBEHf)$m; zWUBj}`pQNhKmMN<$9HK^>1Z@&qbWqyAVW?HNDmU)r`Lo zY-$=z%`$jlYr2rY;pe2U*}2MPyNq;ImfI!jB}U>U5G@d{`a)+nnRQifv~Nk=-d=pi zEV>Tdw3(|D5D=Z5(&U)*)b-5kWj8bbBcJ%UZQu5m|2F+(Fc-K)?jEqFbE3nanpc%e z_Xn1pw~nV#Cq_}9)WED01N0dN(cnVJd`YjB3|a2V|HJveoeKE>z2Q6L>we+8j5qL z>p?@aO%6r~Oa(etDZ7xzVZHJ9K>!z$0Szl64KPLeeC_5;D(Kn3IhSPRC9w{u9)_~r z4ABpo<@GY%#_Jv!4KeF!c0r;m_ZQ#svoE905%zd z{`!9X$P3gJ)w(2spu@!zKUHXZ9Ywf4Kd!+z5%|7Cj+kesvFeo!?DwFZ!apkBsI zW>=MxnFY!vW2vk%_@(G(f&(d&Q@vX4?;Ar=r`{OQJ&Ut2ZaXWPS*Z3vRdr%7%h7>i z^ebf0wzs#FB~==skRWA~f(`mcsSL}8{R7|z7ogpgTch__q7#rpmcLfye(Cc+^Wf+G zk0seotd8l~19g8~>Z@^7q+VIWTVPxEt9@+>LTMSu?qg8w-$gp6t;rvQ5z3C3fp+2? z<(2=`Tea0?IFA1t2LICQziz)+@aT=M1$Y|pUqHTI4~OiM5hb-IyO1re{NGOD2xd%s zT9b-qrb7y$TI3efMwd{slTqceqq^y_w=#OkD3FEeLdq;{6(q8*FhR|FP^i|BB4kSU zyM_=bxs@yh9s}$3EM0++Dvh{wwJX~*+I4vfw+8h=8!5ZEZ6x(?$FhB|+ttf!iV+#x z{=6?mi%_G|9G2Pk;}#pUZQwt8_Wx~f{yylj0*sJXcu<0X=bs>V>NRdCGgv0~?^brJ zVW4wjzfDerFd|hZ3o6LS9r=Jnv*FwBXFuD+HLP?67YJ8DRDd zPNAYE{me^(-l}HUrG{aX7+58N#5r>cGk$700t}UaWI3utSznme?Nd)^pB&%hl zuKJuijQ{dMD5YtBhYhTwlSBy%_i{(_ z#7T$+!Nd3RFr3- z^8a4>|Bn51z~4Uf!ock`z@yIplqC|>82VI6ni^z%XDkvVCnh9b`46(6$QKz00NRFq z87iSIZjdtNxR9k27=j7%18J=AFZI$Sd zBA7R<43Oizia+)7X*I$TfSG0 z+O|6awu=Gf5$1m+4fG(i=sQhr2yyI-&aK)?jw}E7j^^h81PB5FiVHOgm4~QXbIL2y z$gMO|s$F&{XU2Xf%5F|GCa_6eVWZw&G(kZ{G=oIX{%F=i5(>~l@WcEMED5RrnWHb} zLe>V-mm@0%m7y|APW?nMBSj(y87wkgm5JmS%%KyZ1cHK;ksJY(ystLnVqiijc&me< zk{TmfQK$eu%2{mE{eeG6U--A5`w#g-2C4Ijb?Ss=*DPCZEyS>1J?QMqkExf1Ss=zR z8G|Qyb#Wc2;2e6?<3Fo^#JtjSs1%oSW`+_Aw{hkFo$~*?e&vVcr{DD!IcnQh&_)-J z9{=-t4U_cAmWYgar&4jzPYD38t354!L(VJzC;p$(nZm*sSU3}cLeVmxm+4t<2p9o_ zz{mEBzO^wWdslzTla>F`8Br;hVazIKg=_}6LPD63dQtv_8FcVJf(t0ANQ96P+l#(J zt~8Bu8NzXa&LCLsAW?UoUFu7~a58}d{aeCN&w#&Dj?NwTKC!HSoEtV`3AoD^|F+xy zzWm?||6=yP>$NRyJsFn{tx^rVSPuc5B($AN<#`Il;Layw3cjF z{?GhBDHa>;SP3C>MunR(IeR3@V+jh&hq2@XC+)k*ccI;hrfHCnZLk&sL3nq8iYw)x~N z#Fm%sS$#Lgo|wAL&4p(u9rEW~=GVqv7wOYP(4zBr7Tsc#*DobBTTM zURQw+7?0|^O4$Pw)nE^;5xz8;w}7y^;mN){jsyDb^~?C4)Ppk_AMNU_U3FTd^ruR` zRqySg&84nAGWi(Qn71Xd@2bK;m%BQIqX*93WJfrznO`h-ie(@PqX=6C)tm7YY_)t6 z(T|m17J}zaWfXFF{n-_CyX~y$G36pd6<&Kb$X33k6rP#WRIvYfJ$|e)mZCq=0DB$z zEvs*v?_kuK3L?!MGg!Bwx8LT85SgN<&qgmAz0cjuU1AlSVuzmFPfc_$Z+cAdP*jqP zZOJ%~Ret$39~xM(Q5wHk^PBf$!@_L^vNU#U6c=2!OQ8Xfh>XGJV`IBxgEC z_&wdX#wSp2OVU|9=hGLeReEesA1{hq$>lC#M@&y9gp|vX2*UA1PC9$RnfjH2o(-A2 zShKdjis%weDn~vv%yYJy>|>w1HD44~Y51Krbt^V5+-a!KYE_$5^`@S`;z?0|+c$u8 zT4kY~AW0E#0cRtx>rlLz4t$N|dp;GP}nSlNYe;O!n(`@);(cljnS`IsBR>W_I3_|_JS#9 zn$zsh7x`wXWs6$wJdZ&Kfc0A;l$e3-hK7sBk&t@%{q#^v{cqpuuH23pvD^Ts zdC$U6)_5WvbhwpF?X*Q*GbKU#GyYGyh0N>Zvl(X&p0j@a#kaFi%o0~Jx5;}Fpn6Rx z%%E#03cR|l7CQop_r&(i4lEdQF= z6SgVp10xJM=|vJXeal_lw{q3~@Mwc2AuMJC-=*R1U}s(~ScnVi(=y}VHzWrK)yTcY zZ%avh#U+l$DKO(SUYWI8;#n{0r$KFi*n0S?vr_(HWIQ3j&A)Xh>^iQ?%Ne!svdcQT zW9&G;LI+$jHLhXVj(TYADA4m)OM0VKUaqfLuM(Pn-t_DaNYl;DDj=z6;ZDOUU``7%EOYaNsx6#ZTb=lbA7cuLeaG6CDe3dybRDqG(h>R7u&cyol@ z?i=t);UIA@iDJ;uqGzR32z0Wl4v#M8=RMZqq6(~4p%EEh+3*l;Yq`! z)*ohB&bD4slZ(wyp|vy)SjUG;@{_vq5WO0r^m|kFnu{EZxRgU?136wQk=pE!gZ2S? z^)K%1AE=Ay?b%v&r%*OFlRRN&`^)bP4Ws^4W$??Vx_w&9k94Lnr=xo>(101;g;C=a z)$4K)`hyd25+ag4tSv{>W?Ww{LH(Io%>IOk7Im4%+_C~OswN(v9`I*Lntu7_&vykr zLmUykzBJr|{J1#YZIKORUh1Q`VyW#2)S%>as{PDtdGm#ctnIon7z`nxs!LFVh zOER!p=zP;x05sLt04Py?iwQZ zVbA7lq;Ozjvwr$V3SD|G{tH9*Rb~@!<9235UOiYx{P6Z8=6!XnPg9xkRHOF^;Tbk$ zUxU*NoQta_Iz8JsUa3T0026TPr;FsG#IWB>+^5e)r;$8n@9eVjZ3X!h(k-rt^=g_K z0uUMb@WNksuh@`FCydl;1gNOCv>PB?h?I6~E$&QYHViD2iUsnzbEscjsrkYv09_ljUkTSq>nQxk}iOCFMzir@y9k+$8L zOFba)<0IG)XKHXXZ0QO7sR05MbU1RV)$XgGP~x7K*YmCF*jhit_cVRJhvR>5NfJtQ z@R?)cUq5R5X!jajXkCmwOx7bF%o%FT%Xt@-55yS+IwgAB!J$5b2@JEyCHIU9L&fEX zGooz2+Uu<*2(4icQccpsrR_0&>aaqLc0|OhWjh)*C$W}!+UH*>e(*j3hDHEy$h6Qw z^!X|stPk_k7IGyHL#zt?SBv?w>b)tMW!*P1{kOu@-YzTw_CVTxG?)(CUr5%uuyrb; zKf@$3*vQyO_0zlj`lIlAmwzvc9;o6Xsd))L6w9fFk%8*J!@Iiz?WbH?&2^YX1Fv)1 zs>Rs2dA*lOzTu)#f(ZvlcE+QGHwHd`K!>lJjHs+%tG6H8D2&>bB~N6-DYp8cNYyn7|KF`X+sc2PkC&%E(S|6SQcC|w7exYADlVtxQ_^I57lWAiN%xv5-2 z_iccHZXjaC9_SmnR{6+TyzetPs2_hvZQ#yP_0bnA(Z$Gzl%EG^EKkN&w1v*)TiT%d z1i+DW5XyIDZice5#K_Snb1uQ?Vay`Qtz})x{^c}-%&8nV#Lz%`dafE-@+heyE(5dp`31lU|a(uxwL!W**JXamXbCe_RiD~Fe&LN=gK7*H+x{?%jD^js=Rm*e@`;7MVP1Q+|0vSgSArs@eQVI_(e0NSvFmfSM_Mi~DI6{) z;U9?ww5j^u-4iKOp*YV`TK3vx3tkX~SDOqTI*H;}iBxIsan|JKJn_dr_p-?i%;|nb zKMEmLIjYS^|?M~;&aWHdr0aicMYD3zf4$ogW% zRujGPA95En0MuaH8Mf*~NB}j2}XjEEN=_SrSky*_ashT&z&+(21 zJpBh_K7bCQ=uXhmmQ$Ze+Pv{IDkArrr7S5K{zx7Bq@O6(zzxC9YupC%%jm`TTR{N7 zumLwU{H`ixlWHlP<{BKQ|E_cb!1rr&=A33%Y~I;*kn8JGkOMXHiGytQoOq&q{hHC! z%#CO^0FQ3LUf%VmjkWsmrKnUKhET4cqM0>f%bjHqb~9@d569{qqbJ)Wt zhKI59(K_w<1#-ih%jHG!FLo=7HpHYT&9t)Oj-N=uH}Bv&wcCL$W1(=4Lhm8(_kDBeXa=%+P)=nzE8un{&N2>u z6_Rcu#IoD-rc7l6PG5$G0ceqi-;Z|ouYghT+k#*>WD|b2tQNk8sbrgH{KQEc!?~9m zX_bT6us;q|_5*3<(uTGcvElWRMqjFQEAGL~!}~BD8tSyB5=|d;Q+FjigX6OCMaA1D zJ}KC*~F%-w4#1Cm9rDxWas1h z(nbR}elcelebp-lI=-GMN=Y2po~D(SrQJY z(AwOtiv1VR4s}_yp`NDhcf1qt4Tjy2+ajOLQF|1U+r4TJJwl0o;Vst@mxo77wSmC- z5Q(%HLX*l6;Qg@a0&9n*_oZio-gY`(UkgDH*F*1R1&&G!2V8pLU}g;TB~Sa*k3Z@5 zQJ&hkvG&W=s0pP$NU~<>rF-G3-J>aTN)e_GdSUte{S>WjI4!6A+F8#AP*J{tkHSo; zWt|M+u9~h)&6W)J(a*G>m}{LL|Jknn#;MkQ(?$P}8I|P4_IKoq4m~l1MTmZW;s!Ui z?0;zq^Dimn4!6dq)cJ}Og2;{D?<4xI9H}{ZC`oWST{_13YOlHPWhrd^n>P2P zq`^HNvna?`&yf-p; z-(@yF#WyC?b)4rMU;11MwE~g}ogu#%9RG^ZnfdlLi1-w{(h3xdipW(FVDoKzpehdE z4Y2aSm&v@up_1^|;7q4KbBWcq#T_H~^S)n#R&fSE?CGs$T2&!WInVYAr%L)E#+N4~uCao~MZ z3#F4=)^9jy1P~UFTKNobMWdb!QGZ0Rby)oDX#dTHR8R2tm2y^l&rD)x^mhKo#WTvj zK}l{H2d%k^=?tJ880rUzg06TvM&F(@sl^Z=9n6$rAM>MB&on(=wP4#Ete4n;u0NII zK-znp-G089nsXt1DUZRJiBGdZ?#m~ptbRY$VkmSE(xTFD3^#%{k5)h(E=+Ts|?pvHNJ7f#*pfvU1 zBXGZdQ2^jQNx4s+WD9nTE9UaQYyU9aWD7T%0Ss;xVgRabZMgcFa<5 zFkgnG;Kpd_=H96x&>}fWZR-g;jnJGfDLiEEW5e+3>BV3@zZoMA7z+GS~~#_N6bnwsl;GkNrnkG68)5Az`pJ?YpV;dnw}QuGRM2H`%TG z2Pj0|hldh|{V3s++(MqOzrIOC_8 zbLYz?_n~?&jL#+w2Igurm0CKD=c!}^8qe&BKY629z^k0?-25s( z$xPXI$0k15_9_Cbcqd$KnprgX#DBAJg5m)PYg_=nr z1^gZ^az>&~DsG>6(fBwn~6Mv| z^4G|7c$uo1=2E9`%m1oyv80$sBP-$g0&yfwSm)Hs^Qkx7PAadcv)O>=xTp{SbXF>+ z3;lL)xHi2mA=n!=1Ja&IUtA6zj(W~V7NKvkq#Xd&pn9|33s){a!SJOHhHlUMM9cei zpJ$*5PUYO{0^uj`s)A!|)aYPTaqkz#G7?jNQ;mUYUfzDA(Nx<4^3NPTN&}cyDGcEe zkYs*-xsrhq2TyrN9F3`yeZABaPo0HI*gA3!N3k+g1CoqM;f|#9Vli14vDb!4MLP0UXalbqR-6x17Rl>=DFd$vN!v`67JWn}ZMD>LxQP>t z-3upCD#leGq!tu*M5mj!rG$*4C^KArBM41-M%e{RX}fByT6CxY<;`xn;aPC&)2asB zC#h0aMBYVDss(xz`rdSFcI&<~x}+cHm%z*KtsRM98rvcKh_qfQ5D6Zf175R#nDAH# z$p4g0l$LCG(DEzBRK9TiaO%n*p}+^&5$#(@*9bX@59~l;3cW`lmI$nr zxE6F$;F`#Jf8Ov!)jJ#|O%h^YD=cEBIBoibtugxY6G;1xrhuS5vpsEuhF>D-Grvv> zX_aQ{ELV|vR|(6GEJBR%1!IzTpFHIYdR#<_&f!cw?i{_G%D=XW0hcZGR@ZzI1Q@>z zYS>k2^dfVr1qKNV>BTnxaM3(}bOUAqgOmltOc6#bWPpP#AmE)}@&%exOOuN-3~Cce<^hihu!tg7*wn-mPwG}+J7p1A+= zLlc&jdzdJ!#AtKSj{nD#g*=Fl^pG+3=v!!YQP}aW*%X`&SiFTl`rm_NSY~KO*g6ddTU-q&HOV z5t8_x@|&gEy^|PbqU>Shw(7Z@l9*tHEM!`)5T#uG!J6w)Dez)|=*{`?O@fJ9WizSH z+!f>Gy1GmsQwHu?Tc3&9=IOeaBb&n}huYR6(m7v3b!cX8lXFg<=84V3hA4ODI+K*W zvRH{=snoHlPPP%s^;}&66Q&RiK?kx4U~$p-*3@jJ?%t_8vV^@f7?;@1*d_-*g$=-l z)+?*=I;qN2+aml%m#WBM_o{z(!*UKE`)U?IGKmTgK2(426YAcJqfUL;UdY0r#>$+R zygxj(?iv|tTe8nSVw#JA*3(MbE~{uuja z>B}`5-Grui6uOIhqxBR$Fz6cHgb8W%xmG+FJ->XN#~y2ZIoql){lL9wd2Z3g6GQ)D zrn>0w4oX-AZh4H`bpluKK+$wqqLm^g70hikM>c4T*YTF)x5@thyO4Bg(_-`H~iT7m|{`h~iw+#6sSF%~E<$gJpj^xwXN-VQJn zHb!_b3s#Yr4Pj9x82IL|+25;+D|*7V&(A5wocH=m!iOZWIMX146+iy>2Q*$pJxRU@ z2tina#1Jb)0|)nO4_~jG`J{JqfM{2`v51d^IN9st7XwE2ykbqltbX2hy*r}$>d>ts zz;1agTZA;5K*SYQuis7rEzJDUyypZsS_QnJ|A0b1o;m$RCEcH97jBe|m{#-0*ZI*l zzHR<*>Xd8JuSYC!Y8+G51YZbKd53%K&%K`pr)xB4Q9vXaPLg8;w$$QU10})k_-L-t z1kj_sECkj)c;6mJ$UP2#cIOGe_36B0BJkQYoJ)m_BZK4Td0OCr)lU>AwERpqpgi~Q z=Sv|#wS=>Gb>Wi`Au1L_zqx|Og-SC50;bz_wroKe26rS}ZX#)2Ogs;va`W%&lO!f< zUwRB9cJ}$yYxdTP(I)b*aN>8HAK=T$mRjl@D>+uYVsu)OktK}p&~k28nNhmnG;tcJ z9k%H%6;FRMdHT`7Ng+rnw=Umkd?&N^2hI5YjT)U0y=mPabvAuohU-26`OiF2C(LrU z>t!|+eB}I;WEv^GXmu-=X~;YG<@<3Pasx4_Ef)I$wGjgLh7y5q6n8g;&Mysli!Cp^pcNlCZN`8o4?2>u9RGi{0@)Jz zJvW7{%MTApK;`@7rBpd9gX5MBuHFSR9rAXhtGTXUXIi-_lAXatDADEGnO@LoOS%IQ z!_9pq0$CS6Skg?Q;0M#e0X_U-sUMAAdt)TtBYbvrFdD3cW8qvI3{fOpaz^tm;rCRt z<8gF&vEa<|6Tuag&unBlg-rDos3)84>zFNLu(zOxJwO&pF07gQ2X5Z$wk=nD)KHob z7T?TI`Bl#cCy-c?kG!hH!6QjBL7k!KXJf`RCQxEA6*Q|tEHc+fU>BElUHd2tud|cX zwMd8cc0Z8g=6(Q@^QnYv*#KNZSBU!S4y%qXnZRWnFc%|DDlNmaV})n4uub(=zr70W z?0*5&)&iJ=CQVn^Lcee;*C))AUa>Rr`un`u7G$JEn`Suu#e`t|$WcFHhKjAJtIbzI z9=#i;_dLw>_(g9p9f;Ik&24=>v$4imD2PtlPU}SoK5DQA=E%+Rhvu#B$(~}7Msl4k z8Sv%hsEANB@N+z!%2D-a)=US(pn28|$wD zso2VMaf!5iPXk)xBJ(h(sl3s$AkYP_iak2U915}N9-zj^TQ4V1BcAg6J*&Sl$|o(^ zlaHg!=@ABL+Wlq=*2fv}U4F^K>?$jnu$*@!pN*q6t>fVnGtIjs`j{C*OJ;4R8rfdd zBuSFw#|~QgKcCz$kMAaduP%`f&cV0SC$hO@;_p7h@9O-Vr6fdHFBMRJzC8EvgOOYR zR0k7EVwBS9>xi>`pz+xf#I75=fLHe}GA65@V{c%o1d}R1I?Lp39OyX!GP$V&>nCfE zcfmae;GDVbvdl{sB3$d__{-R9&R2G*TjXy8gi1Q;0H_XwKNruDw%MDarFOG0U3UKa zKyb5x^(op-N$QX|Ydyh;3Du);(0#*dBXAk9(Ii!fcR$YWeV2vJ;Gg!XiSRJ>co^tz zhG7g`oqh4(BZfdZuSu0WN*!m_vP1q@cG?%;$T_4AKja7;U_@n62G~tDlGk68hYLoZ-sCOjO@i65Wqbmf-!ty2v^V+KwXkBfM=7oFD^3gBwh%lI3v`DhMz$ z6eJ&v?Eo84sMv-ZGtR zIrFB}W&F4?y+{W@5KGa^tMDhoT|pA>Nzes#Zu`EXJ8R>Is*}|6a@aWS&Kpyg2%xe{ zwHE1jjzx-wr_y#(=S{2kr|>vK@=ow^bH0g}|M=V+cA~o2;5q`@$uAV#tj;bfLxggV z6$Zi<_on!Dg@BHq?)u+k2@+YlmJg2F4GLyrc>DG(TNc#EyMGn8?;j`s5D(9eV5rf1 z>-(`Q%_a7a^)E;EkNbMDl(l>x_9oJ3yuug$4YU664SoJerlsP7*P5gD*ifRys&C|A zB#1;N>Sf1Z@AFkmS}LlB1wjXuo%i0Q4GFRwB~RjNfnpjHv@GMlxq6S22X>zsZvI>I z-vhTbDx3@vD6m#;ccXB+WB%DdM%dG z7OG`9RpTTfS8^j6idOWijqb|z!`{B>^B6ru6ov5hexqk*940Q7Sacn&)AXcr#rGUV zEa2$(ISOSoPXbX34g6R%5XHl@O|QHZGa@(h*qvh}j7jew)3v5PhM{I2cwI?fZ{iKgbAL0!Mf>@n{Wifk*ED}Wm0jq38&Zl)XeU>}+JqS`T%}2_{_Oz6z6&X& zNdiB|FEs9`ZVIUe#G0hs5UGL^&9r165~6dsLA*FB#k|uhBN^Z16yA4o{-T=TZ>>seBKXFj z1tG#6k$hL~ey#kakRQHcP27x862%}jZ|cXayf{PD&&}DdQ4|8DqfK;MyM`--Xp!Az zG95iIU00uAjdoiXbjSO#M0;y=;$N{C)zN}6I-M+gKu=v%kLJ+6TK`co=MS>ng|VzQ z_0s`|>F-?4=w2>kw_kb#!*(QE&6h2fPckRRW_DR2@X1+;17R9!OHwsT-Jf%YDc!kW zv7hbq#HkaPqu)i&K{3tv4O9SlReef>%9a==*9&+b27ns#n4!70P;$m>0`0{Uxb^*e z=v8-q6SG8xhI!aWm#vNV0KAB<4hV4ryXH+!TsHV<`~O~NoogHyZF9WXTS?&j{?YkH z{5_huuT#FRnKIt+n+r8xIxU(N+$L6|lz;cBnG%QQdqmfl+s0}kcw2gVuUR^Y(DQbV z7N0Stwg5a{ZF77LMG+#Zz>9WiF|DIPLuI6Z4v#n4!jTOmpu<&{M|WR!uu@nj3{MKb znkl?1UPm{TAp|`w;&VsG{amSD+N(8Kt!f4aZ~5YIc)W_NJR^`Q^8CI5At~Jcx0_#Q zyc9QEo)$%U(Lrz;?`j6nF$S#rNGy3>0HTju9kH5$VwhrygjpEt>icUrm*c?tAy7>^ z%ZsB22cprBn}rlLK2Q* zhWoC|8wXP*H3(ZYw?zeHiv=8=fzWN%1A+2L1u(v(ITe=Chv4u@M0a|PM|Gn@6u44! z%Rj5Tf~WrxX*QkMdA}iMJ{w zbzG62{$f^p&j*?^wM6fBqu!0HcxBhT*80_9+`1}AugePC_7ejKESJW9d^oq9vV_!t zqt1CP{gD=H5%H15=iru{#k4vZwPe4d&(*ko2B~Tp{SMUdl%?%jOg%M5S1i5xwCf+Q z^0f0JUp~8XHHq~7yQEXR_KJz2;qFYT+$8IL;<@B%3YBH z;73c*hpTYkUb?-DCoqsWUqg*eF>X z>He0-AMxB+A;0}Vf7f)x7Gy3y>m$YdwrAWZlw1n`Fl=l**gq|IENUkFZUs86M?>%ekwdjV|k{~sd9po_#kk-{pHp4 zRtFSHf`})O75zyBg>5Xc0=tbR)5)3947yAGeCRE-UTQCA{-?9zn|q9~jTwF>(OnB& zlVX*n;*(=ehl|L;JbjkY6Nnt>Sbu9LY^CeqFi(`)Yk1rim4Ayk@0_Ibh)yQ3 zgVwizV^5GGciKZ=0W|z8Uz=lpJdlr;EazajP_- zZuApP#T?PaH z=*3-bLTOUmBuWU?<@gDYC#~nE1uv)2C>1RBx)KC#pJ5`m{?n8!O=M} zs^-HnKfg(oTmCJsgosEf3K1i6)Ol3@u(NI)!r7-zl$hGLhT4WdQ<*-01Kn-DLd_f4 zh&073riUJ58A8iG$)Y$)@W1f8Pb|bdn%@-}tX>IDlX5*Bqw;)Z>Ca++_rjhy1LrZ> zeFM0?{r6N4+S!_7X?@uid)-qADSusyV;bh1DE*h?ta7fK0flV#03RHj05sp&s+l{v;w77-! z(RQxJX4l$C6L?w%kWEt8yg_Mf-QIm@{kne$x<($+o}9PV$+0E!G@=TZH#gPe8}E&e z+A0j#@PmV;pPsQrF`(%Ro#2i$H=W07Ta-)Mc}S`t)odmS|;O1Rn{Uu*LD4yRQD#T!GF6D{n88z&Y-! zX}}eFOW$2WWBvNuMK+MZp8XT1W6f#Eu!iSXe`_J#2*sd_D zn#)&xcecy#QZpCm`3=p*1OdGp;Phe|9O0bcd+I>n^69GSuRPP5ZdOVGC70TgC216p zAdPx|i+cDQoAu1sq`ugvJkZW}8Xwyi&0F=Lk1EOg1F)Nv1RD%epL^4td0tJPojN)7d%2L6hf#hfN1zCxncW`#TADWbVw6ok4yi zOFX60&2lfDZsAefz<#O;9|{5me((Zz(BJtvhN2MT>P>jw8IEj11PJFr*Lc^>@3e;}z!{>#HR4RSIIb&1^)osCRwVi6U46e!&fSbNhm7#sw-63ElmBB9yFTi zUaKOnMa~B!J*{VjMZc$69GJpnz@r3N32@?^kvF@iBac>0Wc409JmONIChOD59&Rzf z=7qYhp9Mn!&<>v|i>wRu;U{*J_)%^wrm$lIbf}hD*zOk<4hlpX8 zkGs_>iAK-0@}3O)9cD2LvPIlwndx&3B%HOz^M5ZOlHe@Jg$g-G%p5b`8h9IF#JT8x zZS!(zg)?g?8=?!qyel|&{o({w@)uo{vWNAAA)R_sITijV7w52id-mA`7Ymu2Dfv*P z4P*WG>)NLiy82+`2Bes6`fuRBWdp9hdyY_dbA_jZ`A^+=&CPJ_)bGDqAN&tMAG};4 zVhq8#<~mptfuzSqmf66{G(;*p+>|JgaiJ{5%C{S z!ul-KWElG`-{oPVWzhvLj?rbI&b{s`VovPs=w={(u|jm&F>`CB2qL__>~#bu+vBW# zjiDPTY9Jhqt{RFYiB@+VDj&OPHpzZ6Zh^Jg>q=nq9+*MnUmbblxnK?ng?l9OAl}u7uj`j*izq z2z>XZ4}oJ=cwynme|~3%UW09zDIa-tv2LU$hx@YYY6FuG{5{E~A_aUzaXpFMX-Jwm zQ^{>tl#?btB^TIZsIFo$Ey@P|#6tp-SA#W(13vRwu)F=6u{XOlMn^XZZyj;eEajP4nbAr^53ehdcXkFRbZ)k`&ZGa>;)(2RnV7x}QZd!jAb?I3|bC zt@s@zD4hL={RRB2yLVl_Lm1&B!rhGIHaZ?+H*DSRzl>~vhp}CnKnbaNZ)?HIBV=`9 zPp5Ym#@o!fW;G~I37dIW7xGnA%)fj4cfAue`=qQ{?hg%^Jv49hrXwYwmLKtJ?wEJ`Kr7!}$4S%+7{e@iGW+U` zXy|N6B8YqmS*7ay`S!^F zn`WXjgaQ7rOoU2jR{sOwWf~v~oV~>cL%lh@Z+QysLVv{;aN0<)LjMVla$}k(w97s< zLbm*UQ653vM(Sqv)x0r^BxrE+tgQrH-2IroHuK9ZKg<14sC<1PhAWBaQ*q{{Xk0atePYpQ_ zld`0mF)PEAa}=9AumA+9ux%;1ON28Gza#Ij(L`5TAbp!Nm2$~OeXy3~)Cozn(WNV5 z-g_A!Lqtx&IHGaoBD1F4xQF^+{-zxOrjK=v>HiG{(7*?u)3;aXU|`|+L)qD=V-=0YF>ug@ekQ5BH!%Oga$WqhvLqJ3Jq@a~X8+nPGo{Uf8%5%hFez5kP)xe5N%#Z|q4{^2QDT=sRuDIp>8Eu= z_li4ei_{=RyZD1nhcw$rXUbvTmFMhdV27&hSUByE=!~{zu2@FiB{3r^rCZ$x_Ll6F zzd2$*)EL6*jgEH50S6%F3H;;ua@5hfodfUh%QjGj?YY+JJ0@n?OSO!IA@==~8T=B2b}v!yNJwVfJ#x#IhGS(IRz6)N9$9h=qr--HTm8V0$wVY^3% z^l3&?-fTa#W*saK(}#GFJWK57*y3gFsZ7~TSp2$sx7D1_YSD*Opr|-b())GQC_^0= zw_LQO2$R}RzekPJmWKZnYMPMjj)QD*LSDwh@c;InL*uwz-wRAT`{a9QvgeM&>Kz(F z#G%fw(v8>KLQ~`bOFNy!@-N8<5O+aK`xU2|h+uGOJG{a~N}xVBXC1Tg$s%G-bJCZk zgmW(A71+@hDE?7gh&Q{jJcQL$xny%-q7mot3f#IAGyvPy>@+#V%Qgm8` z3`7ZbP50)%!Rmc|r7WS7FBw0XsUSLtrJkvZnkz8rvE2rUsZM+iWY_F!sw7u9D}rW@ zUp$dnt#b3)JQ3TP3Kq_IQ%aLs7YG|Yni4EEGqZPeCXgq}_VPn~^2UT;NM_PY+k*&O zm3eswXjf`88<#xk)sy)#3yu4o&JEWE-4>Ece>ff!JmV%s&buNybaU*!KW-ITMwT9^ z+#J&YW$doKKaC8WAo`{h*xCpEy@GH5d6-#EufL3#JQaq4PTajAN!@|@4d@UUf4neW zW4A25rJr*C2Vzdpj;FdHmpsOk5tiRXJ+v(i@!Bc%hM5eXFwcB*dIeNvq%O(lUO2hY^(2I zbwf1V`*{XSt&3{t2p5rxLig3N!(96vzZOF`ohMTG=P~hJp&};^zEAZf7j{JYe4H;X zQje%n+wNheH+h4&AEVd=rLD&yVt&VfGO$~Jb7J~>?Y|?&Xj%LsI?8&Fkzj{uG=Qp9 z_qPnHAdSiZX2gdu>OZtPUeYTWDPx4A2q-C!S0B92namOJ=}l&*V`liH$~Lf*H3Z|Z zq*(Ds%lzdZN6ZB`GtXdb7{DK%xy8hLV+BuPxeOZlZ4hp9hW&BU?Lf|5CE#wJnoRx? zc&0d(XuXbGgl@fa+Uf95?CA{T4LAPMdala@+#9BG+ZQ&|?p}umssyRFRloCPm@NHC zKV?S0qH3|$ZzFH)s*u_*V-8xF5z4?s&bX$F*7r(8VTU^}&yQrwB4(-Ek=Ia0tS7@t z|2JHl{<~6ZbDn?RI`IM4F;{_p_s=flaOfg3uK?E_;7 z0Y;rm>9lf8&`Sdc5v#ZVC9@-Ayi1|w_Qn*CZccQ)e z9G7FhP#Lc%jnkJ4wjPgvvH9b4v0S6+$169aAi;YegAw96rbCj&@s(GOM^W~c?Q=rQ z=t|!<9SBSbBD{5M_lT%q4vMxwxC3ZXS{13Mx0inT- z0))o5(|G;@tsLiAPbDfCct@@L{_uU~MUgl(qqV4w!`jZgUl9eH+xX42#Q)nOa|LX@ zlmX4qUWR&mUp9$z#Q6j^93HHR9vdvDlPgXw`oa4}ar8I?F#8b&-CJ|b=cTn2=B&@) z$pBMecrvt-xD9KC_P$dXA$Za&VSVM!%|lg27tVn+?xeJup0DG5h^Jc<;mogM1{P~t z@to8l*x2bI7?RhW%h}dy+BLY=?khrK`j@ldo${vZo(5&+S>aO>DmS(yu0PX2?Y1Gt zXZ}u^lGP^8ca}Hj45KdF=1p5cFB}LGXK6t%rr!ep4)sBbot}xE4kZ1#XPS~= z%Uq@PNo=qCK0iy$bU7SwWv0(Hb3y=TvW@#{7!t6_c{i6W?u@qw?Wd^_&@_keB}nK} zZ1djx0aA!hHN`uW6#vtLx}9&N1u7h-cuOLLv1VGzC=lN^qF_rd7_`QDPYyPaY^Hv3 zPmlP8W?h>Gqi5}0gUEk52vdcZgExLjO;nsBgo?y_%Pt*G&Q2>ZBv{&zt(}rPjkdar&<2N%>I6EL@-;Ly2Yd|#&|f#1oO$?Dj_Y4sDvU!9RqPltdR z`>~l(_NP*FfcSU44D)z8FR1@+-DnrkrF?4#dqW+aP`zDCh@8q8i;SImd6K75>xybeofb*;3bO zLPG}O&VfZfGck4Pf*3MHk1@SOp2BPberan^?yPN{v= zD6OjO2I0O%C?_OsN2bCY%lx1{L8S^rJ+x6oN7R=Ry&E$53f-roe2=i|C`fdEVHKzU ztzsiXGj9NSxfR{&2w`_>$sZH9F>aSLt9{R6uvKGb#S=@3ri^tW4mR+ywy=i`QX*Sm zL4wxCk7$#B+)4rE;gk3P;K$a(2-NKK;iDq3{uA^t020Oui=|eHoX9SnWK!gm-CbPo zy8(6%LH@naXg75;<`#Zdf!|s}DOJRRjW&qQ_7i)Su1h3Gb-EN6t14qM?a6SO|C}!@ zTE7Q7p&?XHPKX`Po@nlPm8DkNXb-hEl#bCppnsX+7xKttFvC6Hsq_hMLh1yjDk&iC zVAI!_R|p90QjhXeQTUqBj)+qS9;PHNlyv#>)_-48 zm9#T6>zS8MIMK$LVN681wQ5cO`f({xKrn)Fl62t9n-yQV$728f*!KX`4&DWzI4PCi z#bp{46A9XLyi5Q*lF)M5+!DLfMP1mqj`j{SfFu+^b+NA`{kFgrY=d+cS-eQ>h`J!?+4S1b#Ui{e(EkD}EyL%5kRoaKW}=0gIxAe!pFWEAbi%3{icc z{~)PyK>Mg2Qs8#*4y9N0ayHd}W|{+*TqIF7{yr4aGCayW0t=V)1%~Y+{ZB&V43Cz> z3B}d8aWnMG+t7iCJsadKKSn@L5?D({Z@+C3ICTERk5ahFIc_#O1T9A_Z-rX@D}(om zUW5p#jQP(%y04Sjyxz}fbpQR(&}>h~9!4K#9DO1w;>Ykfy7&Wp6i!Q^iyU__Z`Xi~ zndG@??l%oVK1P?K-{QOt;(A*pV*EQYgrei$C*H#sDxqK77jCw^C~uEEfOYLj*DYJ1 zoM|FN-yPjXO3H>oI;N?9T`A&A?1wO%aLa$_2(X4E_2)@e(^VXKa>wlrS7wtG1p>68 z9A7D9w%V8E;dCwkR?uqBjy}>x2!#ZSszV(pRFgns_s+yEmTI=CKNqCZvIOxHKBW@9 zGJ4P=sa#kbErpuyn=IFV$0$slK&Mx{UfE}Oak?sp5F)G_8XL#XX8`xD6P2)BdoaX- zB}9VWie%;KGQUOmsIb`?X3R_N{m5m=&UJmu?$WnrF!wet zO^hAwbt-vB!?v^55^b|5rUA&e3cF3YVj7n`ywsG6Aj4LWcNN>0=;a2on*k6#LH#;_ zb(HDj!%2X|lJPASGC_!h0_|nX->k@?79wbw1^HS*y(T}WD4MH#!T;kxcUEabPkMlb!!lgZQHhOqp@u@PLnjY?Z!45+culD zQR6gj*f{6h{oS9i&faIQwdS39CaqOH(rQEUJUe)Z4sIA)H#UUY(WOGL)Mf09u_?8` zeVTqA!&(itSH77UoC-GcMQ#P_fzQ>f%@{{XZ^X}|T#*+^eoQ5g%>IaV77_e%9Gn%1 z^Ag-r`P}u|_5?N9E|ZLv8dyForSCqNa#s5r^-pR$Vw>!&rIHzZ0t)WqwdXabf{SLW zZ+%`aAq*}YbBFG4ht0ChmbBkD{%iAmIMxhDcF77EDHvX8#Cr*KTj;T30X?iXL7^nw zA4|fZoWZNcuu-95NzG?YM5BC~EIi??wtrRYT4+cq-{6~D)Ive>W=qIqYEBtyi?|3i zw6@5v@%->dZfXC7LZR0xcy474)F{O!b+f}O?nM4bBD~@GhRErG;K8oc7N9)v<@GKx zxb^oDBX#dR{#L_SX&QBE(g)zypO=pW(;LJju`M|%Xc3fu!7{_JUPePo|2}2aW=-wx zh|c&qht@W4&E-SaLD=3L?=XRA_8On~*1Yih?&4NV3Zy@AvrtL^+MO)ZX9c!Vm{BUP z`B#6^8nDJsx+mR%LcVdy(%Bx9@qh=>IWRcS+?M8o#K+)ok4c4Xga|c)Q-mBrm5+KH zgk4x`VOz;u;AEW+GW-Uz1oSbBu(#@*;?AeGY~GmtZJf(5e{z&ias$V(F-s^rJ8|vT zDr4j7Urk{3J_EF@{uQ(LdOg6K=Up|2K6q&NHxg`5FM^Lsd(okEhQa-4BW5=Q+xRl|us2RxNcFM&#_hXFw2{EC)f-zkJ94*8=c`2* zTx3pgCk!33SNYZzW`e1QAu!8;p&(OkeP7C2O*Jv9Y7Gxfcn`jdQf5BMss)7ho0`{_ zyoi_a!6#T?{HF2-xJO2V-(#84)#-nEWgy4TL8Yhxi*9=f=1PtHrju>&Q=LJiuRS#q z5~Dtkw;Q#zhK5s(N@S_PCPJ--6a8H{LKS?*SN+6Li!i+NnjUcpI znL?HI%%xLrNOv|T2PW)!JFBzM_lz0^oge|D`|w~L=eJ6UVu~GxNsHoXD+^rbVIt3! z?oPh5X7fmb>dgRR=*QZUWeN;ASJpJm~>koaMb zKQkMV+J}y7y&`1_sVS+s7nQ^!HddoXBZ?tNx)s{Lc`$HH@sz@R{_JZMA7tre>A&-z z_ClUT-HAE(ULyXxvpFO74POqCMrXoBQ%rl9!r;n6Z?jw~IQiNFoqG(1m&!r!^W=pZ zNdKR~yE$7#A4W<)YT52~P>I@)T^n|jDF}><_2z0Tia48_Mu5sf&XrKm>At`F6?E`4 z8+cO$hm!4%L=mTa;G@yCu_;ck=br;C5}2oB7)y9$AW!MO#HU@w4Y3UQ{C%=vBzT1jh;&7ThQ;H9?@O!2jYIQO=g1Ch(Sdo2(Stc zO7^s6nHB?oMsENoBI9=$gmOuw zL})A@U~p75lXgQ+QWZ)o6dI_bz)6wWZT=O7GKj-$336~-ksiqwWB(nm?U&32;^6iD?J-v+4tAFhk+a7Agv1t zH-WLQy2@lZ%Z826+LSw&VH?-ynXnC=)=~8z(7$x?O?|PJq>K`1J5wmx{=nMxw4z)a z$xVg@v@9tO!6STH#-sWAvWQVPOAnr0^t1U8F!%r0_}=xtv<1#l=rX0082{)3rNxnE z6H#S~b5Fh1ePZz@5-?EWAG3Y`)F&}iCsal{`i&1TGV;T>+OxxP1NL71*R{hmpY7xk zcN#V`=LAUd;BVV*xPFANv;2L!IyAO*T73WBnxg7~sU)-3 zHjeSR#gfGSn~auzdG|A($mOf{Iy?_RM9Bei8Yf` z2?@khf@zOKB1mY}gY$LbUB@j|tlDlDUyzA%8tp1isoXz3#f!pGx)&{`*!uQA1DeEc z{^WZmxpI2wHH;fG?;FJLISORE70zd5qiI~s&&bg*WmAHkHE#v0Wfc@f-usm3Rd#{I zFw8NP;R>>MtBQu|S7Yr5>hlR*U^a0OU*4?uKb7?!n!ya$789Cxs|E1Mw%hS3AT!<1 zi#Of=F?~j7b&31>%b(a?-$s#Ue^|)P=NSAW8GOSxBrpZ_I3E>>vv$oF_JkC` zhKVjg(JWHQitRc64=bU2F{M#VndnMrhD8{Q=Zj#2TMmTh8(dRqUj@pkI&MsD7!SA6 zTXEaIEC29Z(m;ws-gMt@*EeSI1XMxVC|#}CC-pfF@7kOBQpwp(lNS&gAc zS%2$qO|w;1KaC)`=I(ETtIh_rOaOwjCipE8@= z^o$GiMx^~oR;`j3hsE^^6r|1)I8-7l{`2Tj^t&s4kOkthHl(R=Xl<{d5Uk>tnBtIq zf6|zqCJ7Xu7?o7`Gtk2ccz&qS%kE@KaTFl4 zz21`Vz?vJlJqXn@c-~Mjjpn2%X=>*e@v1=F&qG9&ag5*WtdH0rVS4%=W&f72aB`H% zo2K88I(L!F5qUhrUwEEkhj}|EKOep)8(Ho3S|!2kqfc;RmcX1G<@6 z@FlUy(KB&}R1O@cW|n9An@Wi(g|%fqTUeCDZhzaS5=IP*Fod;PNR3xasZSqV*dyP0 zS2ZLq)^l&Urlkk>-f|XxDaxE4rxXVTE!t5MXN}m|tRV5xne3i_xF3L*0X=DY*RK_L zl7C;!ykK;xKeUxDamJkLPRdk*qDvkCTm(B<4G9YS%OowMWs7cod}_R~dDloE6IMCEVzOLilqnK?v-V`<;$6bv;Kbp)*6Md_@TEtt^Zk?dqO=B_T7{ zLVs1yS6;-=ne_*Bi}ja zEtfat-(ya=aSTyc1lq&#eM+hhIbS)VKTHzmhfPxZw8*W5>CaF%B}t;MNVTX?GS@MM z8w#jt3qrE7AmQcPP1yZPBW&$PE6cp0{Hge^anDXtg?mtDZr06J#38%M)d1UH)tq<9 zl#zcKs0kGKeRB@2;sh>SB$y*keiP99;=+L)UsX&q}o)3tFW zv@4n~VsQuo5vrpBH9tE#qmT+00jbYD;O%wWjue<+07BOz%Dsilq$YDNN2om2sksBGw zp<06(J5OT|4mR!E;)IUI%o+n1vJmE!wCjM~l!w~`u(R>=lgi*tuK)fZFkSz$T#2-e zDgN2cWHJQ_jc1|)SoY>UI3hEQ87T)9N`N$b1|=mHKHMq17K*SUD@Ichi6Bi$;~8-@ zYQ!Fa1=|lnhfJkRRmD!xoCp^E0CIls)0H%5A zUiZ7@f`7IboO!BG0yLbrr#YVZ_RWNh3UM|o!hZ4vOi?uE%o7{FkWjDsrebT=Sn@1U z#T*`pk(`>Zwczp#rob4q*K?ypruW?8RO_uWYb@k!GC=@Q(tQ^a6wLFKo>kRi_3Pm< z_`??rzX%$?P%7pWUloRh`D=Bev-X1@pPQ&CcP6bz(xQynX^S zb@%09ADo#wEJXKKzEhY&3~E`KS!6J%~7gvLLIJ*0`ldxi#kj zBBXe(RTJ>O3H}lM^z-9D90{nun94i4*@Y%IKa4xT(Pz3D^2olZm8cXfCjdtcGbbHf zvuq{Iz_^w}eCT>D?b;SEQ%yZ}zzUviAT0meku1+4s3+#5fK9> zH{9Y6H^7wEHH#QJYt+jY6ui7>I{qLn>tb)d-P`#mrU;Px!Buj)y;i|UbzUqo5On9zRDeji8@V0Z%SRAARlzqDW8!W{X zNUSy;Tq!3lwd%xME%a_unLijGYf4Er9aDZYnOty9q9|_$#ndkouU=_EWc^$G7!aoe zkN~sFJNFAp5wsq@O=jPuWt@iNs>{f_N()R?A>Nbp8j0n7ZDn>VqIsqVWPc8j4eOqk zP<^w7!Z{5P7Kf0GaW`s9bj~b7HtP|I7q6VvF4c$O54{gvz;=ojkx~yLs zAjDXQtlPolAtUiD<*?3He2ThjIbOc$a=mGRmFQ=goGBm;Ga~Hk=B1XJ_^8+umig+<(yKNsu)q19*KTQK~``r_W0M=Gv zu>2^kPn-%T{X%T|hle@4WnTZ6j=Z#Ym%3xH5D`i)>63}9$<)rRhXZj3-Qfk$a8=fr z`O@nO0=ZXx+6u;hM=y9>{1H2&YDDA9c`DF2=7SqW&%F(Q1>JAl0SFTo0Akd9@Q(7U zu{}gc$=D*yTIuJXlZ*7dvT%tfv3_}ny^Exqm%|Hom>wPkMqKf69S81oKs< z(sz!Tzg?{*@})%^lXo~BB(BuRTAOy#>$T)g$$pMAgFnX-;lbnQ>+TetO?#&3$`dQ=OhxP;79uOh8`-GH7x`AzHXJ z)QNZ0e*Jz2J``VEyY6V&LDYZ}IL}{a;~Ko^`WqSC-TH5jj-G@#u;B}(9jdSQG1zJ* z*bi;UFn(O8av&J?{PafAIiu!PelU!86lscZBSH47`=gANiJ30du?I1aLwJG5GG_V| zS+?aZ&5?n?dZ|??3SL+ap8? zI&Ck^F&GXyu6Y*c&vqJL+eHuFgOBGwZ?qQOegZhuw&2FsHS$4xkn|T&KOOzL;1~UJ z^cA0KS3OWNQ8F@Et?sz&SToU8Vou*ZPbd#&XcwW0B!!jNgz#6fsi_2x9-7g#N6n%; z8k%R=LuZSK&5KMW#5W0K3Q19sZ}LL6(ap^NOo+QWA-9UaM^^0bTi?w=WP@>n9ZQ0E zP=R(e#aoFwRq*Hpa2(Wm7dOOM-t4wV>G4LB2Gmk>A_wpVMs*5_xzku+OZ?<{Dp)g` zf8^vyt%zpdwJ)VV?==bKa%Z4X*0gvUB84HFM$qe<+`nJjn1&^(;RA&ovq`GiU^DR1 zU>`r|eqY}j?$hdNos}hZER%GKhX3{=u<_voAf&wmkB2$W3MW&QGg9=+91YR<;E4?; zOJ%&kNXg+QYmU^p7v=XEK1V_Yk0rEd?Ip|>7b3Z>k2DHh@^|Ko&NgY74hS!ZMTU^X zZGq6~f^sn^Yw$?&EA(CW;+r*4$wBt|de(od`1PIBR5aHEV926evx< zk}A&mrhf5m@i4g64^=M}FhvCS?k98)ZVdQa1Pny=K4y|<)j)sp0M)*=s0GJLDjnUB zYx5b^r~VbN-Yfv9%DqCZ7AjK#iR`fG13$hgdnp3tvWWdDZ#Y#}b6N4I1qNeux5IkM z3)Lq~qo3%cZdxUEnLXhc#XV3}Q!*oS6OpKF?k34@2dROuohk$mY`aapB%q}t=ST44 zQ=irn+VK{~XniWgXy_aVELDsR28sA=horidtH1elW&Wuq$|P%;<#@f5Ft*rOOa|*R zdK{ASznoza9S2Fa7hWPwta&DkxTAWc@V0DsH_Va{S=1S*XgI!+j%ZEW#OLz7kasmL zQ1GzINC2RK?R5Xh&t%tS$mEAwPMaYE|x zr*5wmr)7YzMUEnN&zuYST$vDuz?!IdV`Fsy)uN6ab1LpmDpqVS{2i;g?uflWdO+ka zjC^-fAU8yhF7b|UM|_8TS-=`A5cm+k`}*L>nw>R&?^oEC?D2SJ!>Q!hL1BU1hPl!A zVlhR{h`gXG!`#IH(oNtbwWHPD@3pSL_#;HUEVqS?Ock(O! ze~6b{*=%K@hPdTwUXgh8JOF>|yV(^1JOzVqe}avBep7OY>w8ub4-6ww)^Qc5Qq>_BBHA_StW#5sw>$k-=e< zmIy(j2%-~i<;|2PuNOYm9|9-XJn;{cu&AB4_&IkGH=1PGKlX={(1wWy)3M?0dP0*} z->wrotfF|PTnUA7QvQH-jxY+iT`*8L$ChOUyI?IjDCD$G=5kZFpUu#;HT8`S+huMb zEwfCRrnHIO+UP``$!B#N#sNT<lGFycxMb4nXg5j z9y71qP(lLjZN@L?Dx#+E;;||%<e&5KF7_n7E0BISovtyNF*LZt&L!1%k+uJw5x8>_zj`)KNrZTGpPb@5w(x8-eN5 z)iJI3^J5VvW`5`@_V>=oxU4~BhFjq*ROz23Dvay@)-24?7qUVzOZC$d^%OOtQ2t_y zh-R;s_EGra8d%wQLKb7I!o#Vx@vMit!PE=ZpcEDDe_h;kbolltTdk9}U}JST4}HLs zP)Vx$#w4NrRxC3OLbwC}0RO`$FXRA6i$C*g4fOsIw;X@pXK(2Lx5^Xzau;;}mI(&T z55Iq$S_woKavVM83CGaF^5E4BuAYUC%NbAPSM|ef+kVoQ z<=L@_7(tVF-9CHkE>32M0&$x=3(TMw=xP405t79DFY?(k!(lkZYS$gu{RGS?L~4ztl-6O@n@$(Vt+h)W z_X(D}8>Z(U3q$TwfLw5jNj}8s#TPbZ+N3FrKX*0kXVH?Y%0lfFF%0my9urOy9QwPM z%c?!jwK4kV=N;a}&9;sh_ymi9MReBold=!A=e~^CBgKcw=1q+u{AJ z4-d#X&_ylThz(GQA)nd46xx}yl3hxkXq*5+i&gSf>c&jpr$N8#pk^nhuk*nM z?L9`XJg3x53D>X&T6~`fzQ3!v16jysChM}%yTav3YC%#Qsf}rj)kVgxg)GvaSP4fV zEa?~?Gvg}CmA4MzEJS+dNx=k{Q-z@_(#U#wKU(tFaI2RgSTQU0%Mq@K zhtZ*Ov@2h9I^BRFXx|Gty+zx+M1(Ew03pn8W#R*>@F!C}2aZ(x+Dix4%AZ)SIE}+Y z9=={A?n5s{j8N#B3VpP!^66AIKW$Ci_=b#p>>SU_(~IK;HH^c;On9zU*afLkyocL%bC2ISs8Bk!cHub@;8Kuxp3eSR{>gJw>T zw!LZRw&A6C&ID8V|2TF(0y7r;#90wUy_57n`OYbfkTSlPH+B=e83uhO;LL6AryDU0 zvj}hd653Lnt_mk3MPFPV$~(nr=jWb^*m=y2>s)>tR4Tq0hc6V_s0~PWgLiw#IRm$L zX0+EYzn{*B6unSRBIG(Ef|SgWS~Q>IFG`vxTYr@0O;MtiHTSqMO7W*<739UZY*N5&cx}`8 zt_CWa!J8>ZKD5TeGKjOydlRRZL7PaT&(-M?$nmvI!B8g{FdEV!`lExTkEDw5H)1rs zdYEx^%Vc7AuG?#@EeMjr=6FOB!467+1UYpnV#?8MoM;2iXuNDIXk$|ZE~5l5tn12@GUFC1k%*tXmB$yPR$9Smg=m9 z#iVoOCQ3Nb7U_M;-s zNdNJgkoIIF5M^OIljo8^h&eQ@cHlv8#7CHr3r={dqdfq(C#0EYhIyTgr1W5sMxH)# z;-JssK=%SCL>DWvhoQp}HrJST_TIZ^cc~^bAvK*RROGxWP>D<#e_~`u_wP9Qd)UXp zAay7B1|D?31RcIYhJ&?>IN?o+|GN`uHs8SW)HQVGbd(&2yfBf&cA_&a(#%qA&oyOm zYLtX$FGMr%P{5M{Hji_>xl7*@6QkSJclQc@_mTVUKX)eB0zOHZuBrCmEv=IS zE0I%cy76TIuKx}^1Lg&*X;8d9Jg^A=OZXjApV?YP3T+)Ek`*P93&qV4p66E}FbTb( z>{I>gW>7>;-7pJDFvq&)n}j-&E+EMLnB0}xa9mAz2@|A&3b1YZNpS=@%CdPR{(316 zz#JQ2kIA?6AeKN_bBVavDYT1Hi7IX#_*_Y}<(Rmv3g4v+zSAnvwjODq)RPq1I#~kzZ!8C)!YX@HB>0 z4rkGl*s|)}ueNDzS~5~l@Y?XN87FS=*S?cZ;9_=3dmsnrDDGt7f}$DK!CAM#LWj@r z`~RDMjh(sf2*(0l3p1V01}500j;roP5zxrswa*Xn0YuyDgq<fWb)ej(RX4v;`pY?c)(K$ zyUl7an3W94oog3~KR<3)lS-Oo56HW1vYo6w?T_WyX%E=Gz0wovTIcjZmF9g<0}5-qAl_qm;mSB`khaHhn?K<9br_P<-WM zEEy(85nrN@Bva;=<6$j|Sp>A@2OBm}|48$yD^0!jVyR$iqyKItVkB z5h6CI@ko&=ue0l73+)ZrDwxQC>k2$`O4D%b>Bi!2=fNM>zZZ0)Hh;fhyoUZ$+m6b} zUV)Hsl~Q>tv#At)PdrUWxpjrP7-)6l&E?u4mE zS?PwMAlA4!AyKLSu#Epj_-W^!#=!!`TKr63ZaN&yKI%a}asYTb6HN8(xyTh-Bs`^i zTXH&e_?E+|duAx4i$`XoI)mdrN*8j;z?)--DHB$kYN#z+BhIc>GyhP#HWtHf5yI`; zjOG@I+QwOrLpie59b|jzOAHLF#lh2^$%UG`P~EIyS>>mx;vL0TCwUoR78WH4=Fav_ zZ7L5%v)LHWl?DqlJMCkY>!ZFU@?g%RpEZryo ztmyW`|FX@F@7dRBjMUNlw$Ey@h}sn7k}7?Et-b*VKM|S%LjLakthg@XJ?TBU94=q{ z{c<33w19WwU-yVmD}aJu0B}UGz-pBBSu$ar*f10bcxX&8tDYb*gQK977;bM-y-QY^-HF# z;Zo{?;v`_iVhxN%O&V%t`@i^`)Onri<1;<7CM>~^V4y%r%_rFG^t5PkbUyIUl-=G# z4uduJ!2r7QDlr&XYg<3XMd5R@5VkKKU$ubEgM)+25n%fSTr=qCN8%z#>oa+7X7&s{ zVrnp*|9pgBqUe{oq99{(p`<0!r=2YJEQ&|$`AhxG)Y&gwz{wY2)!xDRR+;}2|YBllj`3Vyr5#IaAA$acf1UHLbp8?s~X1%mO2V+FGp0{o%{ru zA?U@DG>W;$yR`r4lD|z&4~9{=UsHZK_XHFBu}B*+}+H^hwj#SWz!j_)xWgJi-PWbyoz<@y0-4^s^Co$<1DZ0ml>`!4P&PPWcSZ7-<^nl|e&Pf1Ocmy%M4N zGD!+Tev+I{O2aN2R;Mn;5Dk~S^aW!Y1Wy{|AVQe>aH3Kjvae?!6mOXIxJE-ULz*Nl zw`(JKt>`8)8o=EHS0DKr37bmThNi=TcU~k#0&2+56USOEU|g8Fx&TTfM7ZJ`#mnRz zs&#G)^m@*TBA+GJ!q2EE#q^d8wy3;sZ74j=;)pGz8)jqs<*AbIL!T}2)*TieL?|m( zJhSljM(A?YWVu<$`DJ5UXOOsY`-Wu*C$*^&5T=YKw(UM#xA3dZv z`?=Qky95%7=O0=AT7Yhhy5k5XGl!`ZzYY8dV&Q=b{EeP9Mmkpm;@XPxJJ1CZF*F)< z@9GBrQ*Z)jR%t58lhZRuyd%S!%rQr4**5}o1Vq%$0~;*q(o6&+7#mu)%uW|lj|kd? z#wa(Z4QsyI8mqNOfJc2TynUQ_M{20ayLhwyz8CvUV-F0N*jvHvb~74VU02tWM`F+H z1kJM3(x!rgc2wGREU|>}x{q%E{THr*iHANT#2F)|H7Z1{HX7pgY(l*7Yl3K)au}2) zs!fnwNOQjPm?O6I_b-qTHg>!^y2Xv~nGgo@KeAc`d7y??AkuD;7WgBaGxk#~{wxO1 z;LoNSnT+@4);%;Cg?1ikVM17k=!8xvcrI3A+d_GjqM`*^{1DqDb)bjla{g;89Jfq~5&WwCfFOollvyj{#!K5w7PbEWrba&pzD*AJ=)WCwGAxX_>!lG4 zf&Bhysly-`fw*w+zne$Z0vKB-?D9uc!EnQ0qEWPo=MRxNjhGr0HfU6_KdU9~+|=>+!!)?SQTA}u1PMzEay2TtiyK7hzs z3sBH>xEPp>J$#zGw(?naCd>h5n1WcTzra#3K1Va}R@4xd>dlF^W6FD0b*BpItgnHh zD)oWN2E0B>faL6v^=B9odk|usvAIoHTq6%3oKgPrB_Mk>MXG&3tuum}eo!ZYUxrQ|T$aQ!0@dZWQjh?BWmZ}z#xU+z zh*GE+!tyu&`k!p^0z=PO0fFa0P;fom4lx73(IF55_p)>Bzx4 zh)rIgqB>g?$=HiWru}cviqaHMiT^S@w5;}@%oQr!sXmi$jM<926ZfFb`)nh0VGT){ z$9$S$MMO!`3xD;;qtD(`MHQ?bxyS8F*?QL$qR<-cn+RPIC_BkO_)OM`4jVt^{)iue zgh&8qi7?Pvy$Z^2zGvd8Rijd+WhL|HylLQWj5sg6W=&`2)tg#O{hjF*&&ah{-rBS1 ztog{HOEwIAUNjKRc~}m=sYFS9<U|3o`XtH{@kybw>aV+R(OL0*K&jBOnPOHiI`v+D}e%s%5?@-y{ zFBS4pUnQ^9L0^3A_sPHbtHPHWHI85nV{!%!L*%bQcB6@b zo%7=8&}!_RK}h~Bw~OPlU5vC}kYF7}qoLz#Z;>oFL-ycG&u4-KZy1iZraQ2*>4Q8F zts7jn0|T-nPae|NyVDZ>CSF-5!|KzSmEZA9aN8>2l1>EEi;Q8mtT>_lVe|lw)scH*JoTgs@`i4y`7y z9_w^dCw?2B1bCtU7}LQbUb`Y-kb9YOe2?KxTRXGPy*5H;Q73^Z&)lURw-Rk{uJ046l&Q|?)BXW~*>=qbCa<<&;0WJeZ;=r8 zabsd`AAW&EySNPft(_iG4>Subya0R?V(!v5R{~)?yK4tA(^X#leOu)O_lHO`P(iO= z1985w1o=Hbv{fa|>-#eWLaD+=Q>x_ZvMnw zV==?(hUVBAovAs{r3g2i5#gye5Z-$ujazX2@QSNfoYuvm7(^2ixLl9{2yaoLy4EYK ztpTmN@H3Achx(htnjnHEkHKG!#V%quhJv@0hhS#${q;yu5_|HeF0OUWttF( zlZ*tjr48y3=y6MzBKRi+_qdY^$)OpaabYM z5`7}%o~=*M08f%0{J_6^+9Ka1SB}4|65=`WsPN^@BQ@j_Ve`2FU!!e<(v*<+D)QcH zgVUD4K>h%Zd0c|aZ#-lzj0$dvWH2F=jQCZJzB^quYUNF*ok$YRMzyz1j3b8P@8|%M z4d+hrf*`@99n9RbmHuw|sl~Kn=ks%ta!l{_yH<+P{smBQ7W@obL}m8CIY~DM{zm@s z>VFulIYfcCM!`J?{fwAzfifHV%Mifq14kZlz`IJP4TtX0rHcr)tj#n`w0U}o09{O& zJ1-{>IVEJE`%m3>E&XfCev||QA`UaPTPza;-*n-uDRNbbD~y7%%IBh+=DB`Rti}>KGjGnO`A>k=_^k)di2>A(Z z@?P2mX#CD`nqjEJW@W`FSen#OX-I;!=ZE2yvsZENbRm1gyp}ZV%{k2j&rL3^jjD%G zq%Zm$r)-MNPHU-rRNL}(18QixZ@K+czl4sGQ-Q#XF8hLnZ`feXrryIrNeiNNds#^= zJwDusYWwF(z^tPIWJG|3RMAW=lB%sHLbe?ZhRqC5+P_^mrBQyZ5q&LAfCp*}2j|v~ z&LHV)C>0W==b*>rKtsR+3$1P_Wx*gezQVEYy#PMF&psR({JJt=3?dqYStPX#i8)kn zX=`ex(Hpk(@rTVu5EJmXwsKQ53{Fhooz`i=E%b9NvC2eFiD=uZjL%IKQlulOWb z{wd7PfqNLz;G*m)_9UisAnoLW?pu>b?eAe|h(Gr!Y*#_jE)fFKicf<^w*n`Gk}`f6 zxOD%%4LtAmWuAPfg-#h}$*Z>{c$Lg@_^c|G_7cvAQ@UQlceXE>{;+REFxa;HgO7^q zn9)axKFY6%wiI=EsLK$L<4hWvgYg4LxoqT57X~8A984!B2~)}pEFJPA#P>bQ-* zwt~caEqQCINR*z^FK@K>6-?({ax{=Q*kBS+CJNa6-~4yH*xx4~mw(szPkz5%By8Ad z+5Ye3LOu=tLDO(p3K8z+5j}$1WW~sMmrN8v?>-V{=vFh(G&OSuTd(8>Woe;4z6ABJ zyyd(EMgVUte6UH4IvzP)?~l`3wA9VgZ6A0m`vZ{X2lPf@+cWz)e3<_>uh0fFn=Ti~ z!LGPVBzO}i(}wE?9Y`7nU2^%q;T11oxlNardSDo}x6S!9^nbs=NH>-YAUHPC6vFuy;f8rMI>?CQ?XQ`i z$>tA^=W;Qr4X`g%7x@?Rg2hCdpVP$NittEj0UeB>pFi1WI%~rrZzLh5705*R^*eth zw6Mz4;imI2w8L_@7gC+I!bx-D-4!fWRHgo|fE{0Mo{@rhz%X@`KXTTX`sBd}qsu5r z^ERjJ;T*Y)Bk~CiEY>WxSRRq34GrnD&@`@O*ieZWQq3lG$*FuQ8k;Knr{L#%d+S9Gm;Ci$VQ7*+rnHJBy~~H*$RJgvd-U{XQj$s@D3Z?X9LE;@T%1ghqt{PI zDu=yhWz=>WJPe$ux%x94F{(zDV3pF2N z4No*F$pyB*!pt`X85A{cNt~g?<6r)iB1I*gjB9bYbJbF)@NO{`Wo#R^#+F3F3Q^(c zTa4GX5b^S!>%(@9q|BCAFgvR+B)qwO9N0fx5*aboHZ=E{Akf4QD{R)6de>O#VDIg7 zBe1Sqck@ZL97}Ylb9Ae8Kn_^t^d9{`Qqb{rkXxuv3xr&{;aiO-2>judzLO9@2s$$k zWB&JX4(?_JiBk*Npj19@C)p85!oi-HpBM@)*PA1Fc*}CG=TGNu{N~^z(1!SwWnS>A zv5U>60Oitq{ewqONzPmgNmHt)E=wolh`aVHaWeZyBEw2kfc*M$@5M#n+<>~z_(BI@Mg$b{Y z710^@wQW37g3wCKG{*fl2X4f-ut+oMPy&O5hDjlcVgScpuDNk*a-6!}FF+|SGSRYF zYT(d>7ntpdzoZ3U0Hmay8_}l`@LhZ==*`*k?FEFiB(_N?ri!1dNLhOM-{*Q453JTp z?1`g(vk%fijxB>!c9=mUGOjb)@+t+kPRk;Of@$d8uCn;cT@Lch)eX z8Y`rtp`4y$lM1<16oDK$nB^Zs!Z-D;UG~7+K`#Jj(ThL%r3QJvCcNg3W!(83?D2<+ z&TZh^lw)kul#|{60R2D$ziQ`q6?o2qN@T-0wZfol#sk7Q4goHGRI{^qLYM{VymaVh z*5gmheBBOFuc^a2IlfE$dfg#RLTC^l&X3GiKJy2sgatWfkEN&q5`$Uy-;423!s@fL8f}Lz%Krh3{!wt00Ar z2cI$uqJ*J;Ku?XQN+}=npy>cOeCa=~Vg_)Mtp3eUkwA=<#y)W~O0%srf{w;)6-?ru z>6{^Ez^jBg$qem-CtN*4n2n{i&BcF2J2(s?8-Pt7*H5B@*znIEoS^f7->j@j=WBGrI!Z!6RG&`p>2|C4c`?s964|ggE zfX-Gou7`^>DA6RdUL}Pi^FD*z77Jn8NmKHkk?E6BY*oc)GIjp1JM@b_>iDaew_rB< zMNx*V7%V6tCy`aUF5x~pl7TXRt2Kf~p9uCiFV?*7<&9`rM6kqzq{m@{ALrF^sUWj| z*9yKv|(N({K2ma}Mo@1zTYNf_}y*R9YEE zCkv~n%90D@J-KWCf9)UopURQj_Kb`lc>7P?3;)Y6TdX<*7pjkX<~#H1?59d3XJ&+s zEB{f4EB|kW|0n(#olAB~m81*dN}X4|uxa~tzNv(J=XPZ}iWjpC=P4{AXsyNsS_QLG zO?Pt-m6FUspm=GWFfxq()t_|i?0*Yp{dxaQriFn3c*a+Y`c4^O1SO2gKHz^^TZq0h zD!4oXPUrq5z@S70j7oT8%e;9lzc<#XFAg|W#qeX%qRZX(x)AVEjxkJXY7?z0sA}Bl zG`L_l5J+?RQ+qi*w=BPEYgtpdT^txLsGS3X*SRzPZ!`ZFf5=D5k=uT{?4J0aCCSyX z1dX?5g%nj@P1$vFFrG*hT6|wD1+h^|PtIg@A!nyU?f9aP{_I=0@b7zI&l87(E>pz6IiRV~G)7^6kmNjG zxg5#ox{J#3M}NjX5GnsbAMu}w|1Ww`iSCCA2_U~z{(BzFlvWZ!pqjeztDcv@ETY;% z#*W!E=w1|u)JuzzC0(^SWI2Q9s7Jx1cVTB^f9pcL^=6&jcf$WaeemhBzw?HALDpUK zACH6&0(AMFyL`_;$zg!LoK-hmROu(VUHO0I|NFrIlVvVY88Qk$j#Rv!U>21Z_`Qps zjatB;0|Z`R6b`n9^Y#ok(QXYa5O@^xugWB1mY^b2uDQ=-C^H_dok8BbIOXQ^Pk++w z1+!ElvvmZ{;&T-%*u>83){Yqm2H&kGw{jyl4i8LZ5I{K^VTg!}&eEQg*7;ScJE5W9 z6xnD;>Sfqzh8qwcF{qrkD|RAO?y}wIZCrU?@^zx4Yy(26zau^nIokzmOG;u3g6kZR zHRehS{czVQyo)5#Y0OXQzshvSCDW+hb zCUcjaPzH9c{_tO6wf116Wj875+!u^-5%xT9zU=HiRnr`{wbgXC+zJ10<2f0B=MCR2 zZ+rJ|xmb70e_q(*#cgnQBUwg4j@e+)E|N`a$!@eUvbe2jK)?x^FrNBA-4_8Qg z9CM#$n{Dg~|0@WTDz#;~?AxFX2YlKMXSGCQ6YQem3WN*AHpjzPz(z)p9Y6BvcR)b! zh4(X#LzqD|azi??Ovae>fY)cF+Bs$zYrwI0#Q&rDvcDi}yY26u_&;g|o*=-F!=o1? zfSXc(*@jl#EB~+jhjv4MlId9fk4FKA5+nc7P-6T`P>;G=KsPik*Kx`KTg)H)U?soXz%rgVSTpe+S^w$g@27vniw~Xs zfA=r_=(z1Ku?;rL>574kh7R)wcv-b9k%UtB1Fx>A``Ud{q;V2ga1jYRpGNQ?8;+yZ zGR_(-eYLzvn5RZ4+ z16n=_*knZ_ZfB?d=tmzL%(e^v+#sQl>r>yu{Iz9vw?9Wy(e@d9z$V^G;Mlx{uuW~2 zK;3L{#$Yjwvi}@!)KZmZ`;c)vjW>IMMgUGgy0JKZUrKc)qP;r1dg42*D1Dmid zf@vtDcvhSG3yY_q$M*fxKjI~F)V5vt7cVc#K&&7a>`I}{oQ#Q5jvZ;sRgYTHZ$%O* zyTwew5_S7(nA_JgbagranPaAfFOZ4NpDQ9bbEr5nDmqa$W+c&`XvkM>S_GL+a-5wA z&qjing>{e*;Md4WDNKLf#-bAec^;%nRZX{Q1F}>46mlcqkQyZKqT)Bi0uT4 zJkte)RR+a!0>pQ(ZiD|(0c}5zd9(bVSsL`6fuz*R&(Ih%L|2qD@g4`%cbYLNLQe{M z3jLBzOSXNn&?2O;yrc`Zd(zYZNjrX@vwoOM1$Ti4~<;F7xz+3}G zEP%gnh5ygL;mOhG{=eZ3-(wqZ?u-A1T}_3h*M~{qa7PXbFd$v|f93yu@&6Qc(+MZO z#6;b-;)Ksm1eTU`q=uajJ-edd5&;Mq)s(4v8cQ{zIVCZntk5&F(9}wJkh5i5Eq-OQ zJ*D$PTRVUBz;l_~Rm>xpNuIYcv&kIn5g~H3h$fW*i%`Jv_t$@aLIc287TxM2nDR0DD;tOdG@D>QwjN{MFFpy?MY#!*}@{r z&f@+XBovxqsCz2xcfu~Uu%0_bC?IIr89pRZCA9273ut#&T< zHXGU<&$%WNrk z`ds{eZ+O>w^797wWdHW*a_NK_;)_fjTL_r6M0GtFT0324tswdpZ41YO2N=$CHi-4I zUwOaz|NLit_|5G9kIIqT--)IFd*uK4VVp=bjD&4vL6aV=ul&FA|33MDDglivNf#((~6BVk5yVL4v%|a$CEG}b_MjTgL`?3 zv0|XeplAYXj^nYY8OO%u=IbSGA^#l7|Id5Dr|u8RI&%BkAO5;~=RY=;I=4h)zr_ss zV}gO(M={HfEB~>wT=_3|%l}iI8!^du2PeR0B|HU0t;$%|SyErg{HeqsZ;{C0^hQ%w zfUxQY&e$_jG*Z~2hB?U98~pc2{!V^jn`Pf_Un_;B zu7wZ?H1!0xST>|p757mF!0r1Pbai=7r_-7#xhcH0OD7dnRwsc*9|mDSK)zmdzxCEy zGundS8LqZ*X$%PgZPyjbQbBLZpix$VHcaB_q+UNc>bM0?wDmfYoAFd6c7Gx+G4Smd z5DlJK$4Dc$t{i8r4plgw|Nrw(`xA2H7B9%UZ~pgzrMBW_;>ZKNb2Z|)9|QmPcJS+! z|5yIsGXM8e0B3(;MPwo4J=iXgLM>Z-x*>gWh(!7C+j|$d+pelUbc}tH$RqRyxbjeh z6A3L+fj}h$>O=ljmdn#p(eUTe+Ac>Tv5^Rebe zqtdmegxT0;3aB_BG;)!+kEWOis*ue{323zNGYTWABCMUN09N$Ug7ppGN^_xoTQdOJ zp`loX?(&hS(UL~5Y%GBW}FXJ3na0){GVOwMG^ znw6^5H&`akDUQlm09`X1xJYd*V5BfoItSz)x) zmyOV>YkyKenoh;xH_^N}7HkKxCUit60M2Ba`2XIW+4yI4?;`%I(5R;Z=i9UlU`l(Q zr2WE-{~7K;eL`M9%012Ftol9jEB9TuLyW zV09>L{4=>JRtNa%T$teHaZ<-`_G#Y}I69PvfU`=Dy-Z9uXx{n?6zIX6BXiqvgd`&2 z*6YcL-dh!WStWD6+roeD_EA(=N!uW(T6$1q(NylznlmQ{)&lo??k1< zIx8aV(`pS`cE&%=_@~{+|1blP4q`blv{Fsd--J+NG#YZT6`Qat^<#Z?THhH1MI7$a*Fabq+Zz2Z*eh>D=w z#V=A9cGL)V;4M`rojk09oayNBpI`gi_IdwrsZ;-Z1^+TqRQ{`ASfT~8Zc>^l^lK?< zrf_Hc&-kZZ!~ekr3PX&fUb6rP8i9J*F&)G~9*ib1Ax2k%MqGIVAZSkl0*tJ2$_>lO z1|Ol)4A_!56V|pUnNbi*cx+Y-_|%i{(K2)d>AJ6f)zPFfLB+EHM~uYs6kzK#PXvpo zpjMQsgHrdDz}P5&LBUFm6QbY@l)gFwLg&m%f&oArgBg5MCoJU%s34FJQfTyxB$5NI zkA!XHLM(}N&R*AZ46h@3&>kXSHU1nBvK0Ml{%N|fY}^1yY`YJpynz3ByeX4 zR91i`>vST2+99#;pvD%Qe!WbRS2DQ#*4_=P*3sm9OB|Q5qX!HLG3D(Q%aKz}$dkfT z_M^BIrzh2!BY&>$L|efBwm1Hj*ZvOeG5nJT9r1f?jeD(Q+cW-W{O<+)4{KZt1$V97 zA{o3#jg>otQk$v7^dguDrCK)v3JH&O(i-P zCW~AJsO;%TDPDK%L%JieTT*?p*m&$1YTz1b>bh@x1m6WDc3cSRYt)AE;)?8=bSi)OQL*)O}YGFGHtKJ?M%}0pMh#Od-prf3#VWh>pF3 zpvW6Ix~4%g$5%J~)UwkK=5SKrIYxIWC?EB#Kw3kIjLhr?b*_EgAjg`e(?|k+uw6SN zi^Tva-eyz7vl%y;{?LhmBXF`PPKMpcpi_2i0!EVMzBAV3^o_D1>-6G%wtG z)X}r*->&s=8=yn4XZ+9jKZf`(djL=Y6d1z-<&R52uQ18C)E|4Ml_^Hzt{r<&KB{r~ zje@@2n0Isnbw_H?2(;buEU94yFyNZlEw|r_QaR#u>PdG;B0PAY1@;$4GaG$kT)pz+ zC3ga{D2vDy0HrJA{GW_s2%=hU>!7G71eYU}dZ1zl{OA}PvTYiUu|jYJBhYk*F7dXc zzvFLiee|C<{%O0kckoZath5fYGGZfki;Z4sKgf2*Kh5~xMf{h8fO^WV2HjIGMqdar zjbu=9pct&Xw9nIqPClpIZ_qZ<8K-@Vr;iFh z$E-Nf5!iA<9`u_ zGs>dw(Z`Oymr6A$629)% zXeD%YWmfBeH83j+ol1AT6CG8@uDtH6O#qMXVf>DK1AWl}HF9L58S7AIp4xTJ#(^3w z#ZK!%GrbYZC@1vHM_VrP&N%A&y#wCkN>lrIMwlJnk&jsMr2eI9Ky<&A#_{_N^K zjsH@N`?81jMji%wanC}5bv=A&#{Z1}J%In*`7auxO3f_B?RmWB5)^76jQ2_#z zIN{Jf@*ROz&$E~3&VfLruX4cpfKX2}&=~VoM>Wc9;BvPWz3x3@~MmWJpQphZVLfDKs%FrtH9YF)F(8}_@D8A zEb;Ho0f04*F{>B|BLx*4PH>dmR23>*z=XtLQs^c)L)mZ4Fb2R7$&@RqF+%`>k_oj* zmKTha4d7#pB+hWibIqYI(KeEEo*bM3$TW3`PG%jAGZ5WK9>IV4gI9CvJp`XlbFpot zvb8I(PjbzIJ&1XNep*o1az)2B>WOV6$-~X7Jz6GNeiu-db{Rb0IHrwufi`ZA&&%4` z5x2ZUW)_F2q=i00K@KA=X;(WP$f_fOBps%?X_=j#40H#y`#Y-yQr9+NH%1CLOG~Oc04xJFOX7WF^X& z1XzVFM$`;OD#W7ELRrm)5xz}3QDCrsTX;j(B*s^SsSirvk|1)$skx=`G2FlUYuC~? z(szH$can2hz;6UtFA30;f1PSdE)RaHdEMFw63$~{lM8$I;2Z=rJ^ zd=@?Gz7HL~e=BilKM?MsY}F@00Gq6Slnq2$7m;Nb}$EADld{N;z`sf_8)Cw6a1I+{_jKEN_koB z-B*9`xWGTqmXOXmM?e@TAnm3*SL(ROe+qK5c4qt^7x-sBc#=KDXePlW3o}&;nJ#It zf(JxNbwi`TkjPxf2+rzyM6nogn$ehH%PkZF8c<*#T^j+Fh4iYvOrQunm&n_N1HcWq zh34_{Gl#Yl06cnF0yy=gyV1>e+)5EDl>^40sgkceo9PuzaW&mkf-^=rMu#FYua8@v z89@kgT$)ZE_010*-~WE}@EKEf=x_Pt#dPuKKc@9cTVorr28uSH)X6Xaia9w#Yi%ka zAGwPov;ei3XJR`@M0sUaTN%d+XxC~q$$FSDOk{8jC_izYJ=v3M4*4=IfWd-{N}*8) zj8$=yk2zq4y!1@2CZ|pD|A2ekhhMzqLx1wJ+B#IWY1p+(ZRY@7f>sW4J~CWM?=K$}tpsI-^=yZUR}SpvxES%3K{ z!F`EmVdq>>xYc0+pMEN71U~>k?i(z}haOJJ8GvbuKBCgW}?Vna~N6;gYdvSbweF&e;u66}wDBXB(6pFDoq&pP{z6l6xI?!7WJ@xs-Y*0 z5`{aP^T81Wf`p=95UGPhy!rN9>8d}yhPIKO_0T7eQ|Ok=XygVvmqscFbV}W+PBNPH zGbNJ)p`oxdPy(q@5%~E1)RXT{|LQ3(8$0z)Ql2Kx!NR}(o>$QW?s*@jS?EVFVXK}H z4*tc1$q%#advt>JlT!c)gFRYDf_qWCO{?w3l)!eiW&?9vJ9IoiolY*vo=fMWZ82cM z2@LEdp%W!?@)0=-em21W8N>3Ih-!1eVNs6q+$oY8`~~$rJ@z^Q3CnxvoF_v+V=`xkG){8BZa^K&8SP zECyF-3<_n^3ui!#vLb!n0wY?q8c$J6ZU4pJaqbcA{LcFVe)HU)9%ls}aO!=?IV$m*ODjN)=1HYNVtX)lQSRp~>?;ztf-uH|>>6M);mj6e{ORYzc6DLQB5nc3TDwQ&cquEX{YBw6?3c;je@)tY%&y{pvB+-$@Il$_I!5CnsAK|7 zsJOtN0~5Qut>A*Pyc6jid=Apqb^`-dVCdW+ld(_!B z)4Q&|l&-(!tH&k&rLLyah;1aTTjhy|<+wv~_Bj5d{21C$+eH0oxsJV4n1z_}KYs2C z{+H>H|1qF(=3qfM5@5XYvi9IW1w}@MzFkBi~!t^-$%zufB}7mGWk~XFcpG6eQg$(ODcue5E9X;F6U7s5EMf9aTs; zswze|zP7l{lt+_4F)Rt>zX!m`GSj-Of8roVsigWlSCzH|bhEdf=Gr~e@~N>i4|Wqn zJ+OqR`XCt%q7y8%6X6uxvN{Ed@<%5gn)h&FbfjEH$Yz{vhvR*NVUe^`RQ;kePYyo~ z{-1ruQ^y&gZKd*-$nTBck5~McugT%fjq1UGY-CGL$??>^y^Q~Io14yB`G9f>>!tR) z21K1_GyW~hvB3XO>!HPXU=ndHpMs%zx?Ka6QEMbckvd>eYIt@gk1!pT&yj%S%BT`m z&Iz(6wUVs#g7FOwopvJSspa1sW&?iWuRVXDu2WLmS^b^yCpS&1IJ3jG`bSW)lYqm0yS3a4oFX*T$0e^c9|FC@FXqVtk`Bf=U zuzLt7nzo@W$Ts62^6Vu3hrflqTF7jMg6-D6TR)=>Cw;!)Ng`5PhA7IX?A|G05TWY= zgfCamS;lC+OdgR3OOm$b6{qBA7N1v&)pt&7{zzLXQ0`uHiFHCkXt4 zpjZr(o&T|<(I>g*3QeFNor!a%lAl|d?_|n>z%M`LrTT_}ty_6J)MwP%;h0AN0W(nI zK)G7V@c~J>DZR2Xopz z{J;1S=h8M)#!TM)cf8}jWJ}?>thwqHFA{>Z7z)gW={ij}8#9!{P z?GTn@gAu6e(2|e7(9xwXHQtzHjY@b1K{}4cO-x%%d0ISofU1#X28YumFi5VK$@MO!UAL4*!S+Bu(e>f5n9!!IuT4TLXx&Ddq&2wC6!_gM_)qX3Lmh|~u8lMKX=?2| zBp67jCq~j3>6!7r^Y~vZha~`7($@%-hSP#rC;a2&%&rUp-xYR_G9VfdlXL=d3?!0l z4kBD7Tf*7S5=9EqNSfg;(-NT*8hKMnMhO&6kz|)I@^j!%uipABK<)&87nr6Yh8|NkA=Au%gdW#*&ktdt%@+nJ%Tj)Ew5CnJt?qX3dn02{PA|fHH63}B4^=HAE#zc}2{ovjP~|&3oAJM0{12hz*Y=(M{3kqh zc>GkOw15R(qbNHY>lBKESkAXVl$w@B?5WnJL?$A?7F8XPMqrf=kLUz4s*kPi6xtRE zFhhhXQ$Q(o0u~TD`v`L^wOA0!Ml$3LP3LZTl$75L_}kz9gt6VL{_JW`B7*^U_;Bt` z?IXBGbwf^9%9l-J$~~rs-0OZNC^?2HA3XEyhdpJa=bEowOSdiWFsIK7g&LF z?%-G&sO@H(-lkn=oaE8}O}Bsjgu=g&jh!PmpQaU~)$y+1gvug|2_%D@v%F!Oh zu0&p5UF^PL_hy8fee2SWlF!iOjQ=g;|I$1I0MV%_Az5sbBp?sbQTe@Ncy*RNMr-?Z zZ7(H?ZpY1ssG>w!(tM%7SmY`b1VC!=Vmv@ZSu-U^fC&&ISc~q5@5`mnUunxT0Nb7g zkd$A&`jw}=TsOxV#ikjI;G?rKU#dBh1Gao78>0}hH=x?$MF&4dyOpvW{_WrRCv@(E zzYC1t-U>o?8w<_%7vR7u=t5UvPEiY+{Rs?FR;q)Pbea)b)b{jl0-FYBg`-!Fonjdr zus(C`FhxgY^6=niprJTR<3V^r{AYW6$<|-{`(V26=C7P^_-8_K+aq+uHiqS<4@I7B z6kFQk(0y2uV~>9r5EeY4Ju=RKFg1SOjg}KsnY_J{X+K4_h0YoO_Iw-oUr^e2`g0$@ zf4F{z8A~NFLEUU$>ih@eeQZ#`XhKaAHkk?P^axOn(OpW8E0?_8CtZX9Yfg^9^*%ZQoG&#Avwk6TTDj&dM0G z0fJSpAZvI&{F`~q%M)iD<5>Vnng8$p)<@F0`yWRix%Ly|k<2 zga!4f{E#Q5IoT+mVD_Mn&PhkSq%w`Vu>3sZpXkW(zvK&t0N{yd4&|Q_C=A~LI2!D6 zC60nYuq#uKaEwipW40&kQew1_4^ZrG4N7q}2C`1%%L6 zUL(&xlJkiBJcM>CJ>tF(89Ko490P!B4t*&&&E)u2V4#yQ4$Z@XLdIYajE226kLjvE z`wX3R|A*6k?shNQt&{_SyeyCdqr5C|^B@mra}l_}KUkojJMB2D3aIjHXIwtZv+@u0 zFOyC}K}*!PZLq;ORZYP`XgxxPJWp+1E3gE%LEV()n)hC8GrjS^dk0-zM<*)&(KWh` z5K`&C#cu_@2NSgp}unp*e5@~|_^P8*5P0A2m8bvXu-i=xBNd;5b4HA$2hn z1RvBlWjSicln9)fwGY0X+1D&zT_>aER^hVtX%u*_f8Mc>38z!#&pq*nnkA>BNf!@G zM;CtTVmi_BuMgr3hg6}PVus%UzLS|q|X)J{qnFBkbmUlaSwPn9gAeUKN(Z4`w>W{}{R7L{@(EQNI_>O?ox z8k0QnMqomT#*ERG=fen3j)u}ABTc~LC%^i+W4>7~kAj~*jDque_%(li9dUam#F*T4 zDBdR`dsVZQQFnAz(=h$c`DC};aqRZ8z_?-ZVddQVtH=ETUsp}>l*tCCTl2c_;J4HAJf&vqy+j6)g zfUv$)h1;!{V;MExP9%v!hn>3k?rJogrd=2Ka6?n%C6C6>dcb!a)6H_aKVVoI_{epi zpqqxy50x$SM;#_um+i^hIppGrQUrZog2+4bb0F}ffri~&7RV_FB6-7P=IK*IKqd)+ zwcu8dPA+6VQZ63FhnnTS~@9!L@earrUZ`svA zAh&(iuoQD{of*k90?2Q4`j|vE;{jI*Wyi3FmegjkT+eZ@0&BG8DcSc4^-ezW)x#xr zlG4`8&wR#K-(bo5|9}4b+Y3E+LHy&iEk$0TlhQKOb^x*79!~@TjW5t*`dHu}10{lM zhVrdFTAL0t%+M*DE+Up9eRvOb8~L5_U)wr`UbpYyyDmR;`tzRfnpnRnyj(ehiw23& z_yW&LX18_|2{Ym=VJ)oK6bX%($aGxFEN+IU-s=OS$QWc*BVTrWOI=qV`cipUf9QD6yx;cTCqI&u zWuJ8*uMOgcv^ZT@ZkB)aSx0WQFp=)^?Wdm2`zqRzo{eUGJ^F{wI{A9{-E(o0m9H$9 zf4b$@{(klk-c;UDp}Q{ryEap&a$}j8k9#zt-6qR`=rUCj7bzAkz8YhSf5U!VTGvtLcP^U(!*V02ozR2hv4ndlk% zWI~S+BU@`98iBxssAV`BG8$9>gjVANTatPu5JDqbr}&(5XY-*ieSFt~fZX|?S$E0j zfFyT-J;TaL_0!dNHS`2p>^eA78QyZot>f!?7w?h%0kUCoJW%P+Zy5InNK$>OTZ4{4 zGqE{S;T-~9O&tKoXB0WkO25vf`6@_HM=Tt2@c6x!%ox(qN)WY>S1OH~1zCaU51-TI9L)$MR z_MLVT4ikC#B3*Y;{D1ZxmtRlzCr zXz)3VR;tsfQ^m2-04`{c%!CpzCD&$;{0qNfjk+f4bjznkGL zjJrDiH9wQP&(Wu1naaC$y!xpOGX@8Vd6H+OsXo^Z;TYhbh}!ld@2(E=G9knhnf|cz zqoBvwITj8b?@kUt=VUqo@js-42j6k|>&5_J|8viNCD#C;$5c-k>}pTsxayTbvp{3e z&;*Q~>kW+lQ}XXKV#E`ocZ;U#Ka87w>NNq7dLSMjo21zp87VUk%pHf2X9E7)=l|z8 zBF`PrZlwp`>wa~Y{JqC%`tke#1Q6;+oe_DURyjI^N4>)osmLlHW1L?L%TvQ=-1|Yh zzCYk;-}ac1|NPd5Gg-9D=%9k*A8ki%qEjYL5rX}>k&4ZJQqwUZO-M()j}9u@zGc!p zr=D^T`kAwTaI1Q_@Q*I04-LUyH{FHt&uzUFJ2FBVL=N@4icR)OFpeIjCu{As=>oXp zoR1Oyg}x^6X;Nx2AOR8fhM}G&@T+Y(z!bMbI&F26bl;X2Evcf5q#<8kfB*1xpP-8lev}?~&-;!u6T6l284B;Z`hyMF%x?QhZ5r*q;}DxsW6uep zU3QX<04pw&;Zl(X&N)@5jRr|EuxuItAfHjeyLa zJP$#RZ5#3@vcNL7Ml4OR?L~-qJqGyKKxFvD-yb0C412tK>_i~ZRD0u-32YJ41nES^ z|5!SIF6pX+@4WoC>K=fzpE2A!QyN{slthY5n_?L6qtGO3m6aCx@kD`CPry?`Pppk` z0#c;iE-+Bgpd=Y-7*M)Ghx$zh0;X~>1hFfxAoD<0g%m3sdAa4bTY2nshIHmP@BS|N z?-{1U?Z`PRxn95!`|qY&T4)%69}vtvfG`eBcWQ#uF4DdhgviRye;lna^#w zzV2Gj$vNAidwF*@oUrDdUEhAi$xrx`0DM16VR9Wvv0b%IboMO&L#NAuCaLG;kAB8h zXJ7KN&M$uK?KA#2#J`TdrIKb@fP5#;FxA{pDm>Nph@AcnbJQ7pS{cXsF~YysTa>G% zb)B)#!~NV)r^ zgF?XCo#2Lx#Ud!NAfIET-$)cd(|t}or$G+jJ}300Pw6WEUvC)vPaY!cgHc$1Fwfc@()y?OkqgJp8kZ0e_&stq>|C$=5iB6gNdIGWCNK4w^cdij~p zq-~~u^!vX&?x&dX-=Sv({uK|@!CB|KYY#etmTsSXM*%#ia3~BRpLERdFZ6IS>rK>X zi9Bbm&c+tF|873=XjXt#{Y?M zhWfC3f9tOAlFu^|d2RTXaeu(I!Fl-P`N2skm&ax}8P<9!7$ecR9-lkn-3W+&=bDdr zXF=R_Bpm*rb7KQ?r!!%bOX&w-s@561Kd)SH*p)jt8(pWSelX79bbsZXmv8;Gzl(>Z z9Hon9{JXRU|Dv?$<{iJa{{ix)o299sr$eI--q3Ev9!tJ3i%Wb=@vritc2pg8>;jV7 zy0+);m+w&)T1NVDlK_lJ_>*1 zuHo^q*GTgJj$f|7`787vi~-I!Zrj zH%9uFNqExO#pIgwzN?$O-4?k41CooW`uFl56Y8s8A4B|Op47B40!Q`l)tLybFkxG; z#G>ugP8I_akcxhuNcgYqvdrKNpP$Pg;|##~lfVl)uK+8h8Ygg4$;!?RFj)Q0foxBx zFwROwD`fl5F51@_w9o(=fY1{+Mra*G#9q*@9EInar?g`ycX6OO87&;zk{_=CX9lJL zYl?y1{94+FuKhUO>*Rav`m#V?AOG7Aec~7plpojmhGzyXHhHfgy2Cu}Cu4plkV~E! z`R&hqq|S`&>}!L055fTFKp4O8eC7{=1+=`uHQJ!6RUqdbG23okab7UWiB2xsb#i`9 zc5inJvd0}cr!fX~XT4yna(w$A|5y6(V5>9!w}*d|n`Ta23)D~DmKe$R_snFyJ(^Ak z_^Glgcqo@A#bcei?@K5H@H6T@ZYuf#Yz9>;5$BY zP>wS?NHvgQa{Dk!i^()0v7QMv)hI~YQf~6ECMmsa%wepApK-bj%hXF_5}!+1@&H4N zP2>fHGE5MtIoc9AEz77N5!uK9^I}Vkb=eq3$2+OD)%-ngs`{57eH*=S7zH1IpZVRb zln;w}`}hA0o%fwjSKW+`iOBShMk(ye^knLz4o4(KP6i5ja?xjpnUVkebK^VaJC*WV z5NIDcMc$nAVrTBo@8WFPXgA3alFAQ=k=rGmLT9D2Gy8`rTE)NIXK1~_B^dN`>aQej zE9HG67k=`h8UHaa9XPJ^zKG2rExf2|Jam4~U?WVACKzq6N^v(p71bNpw_ z0Bs5EUE>D_z`%p>2#>76N~70`NAG($am+Mra>pyJ`j6#I# zlQ_ftB_AtXes*~KGb3;R)PJLEzV;<;Q`1PBZIlAKbRhl* zPrM($cT#@s?`O__F>N#b`c>~OOEfe7cMShs-S&E^@?CeDSHffvNHU;9dvh{gV?RwQ z?H*J73+c$d$T*5bbcHt=vanM-EX&2o=X17vtCI5?tA~Q{5@{^9g`Y+ z1b@9Rqdbv)sX`-h^Gj%F!{>E3e|6j+@Q?n#U#_F}qfcMH<;L-B1|?N&(GM zq@tV5mNg~)H`+M4d)65wG)^M-oe`4^&PMXZHtP5D9&s*hGv(9%^305;8UIpXNAPdN z)mu=vc95_MECpWhPwY2&fi+Dvb|iZzT_!rF_)h^p`ZZa*04X4*$QuI+R^q8LcjDro zJvnmkkbK`KU-m!u?DK|?2h<#`x}_G5R>`hrXB0KNt0)pqp(S1w7ba9(n+NOe}h<)?T|4zkgtB@CVKa$KR8T7-$-X1<;=*tK7Hx<7KYLj06l3N zb^mlBk=tzbbj*hT$``JUrvPG}9FnX_jR$8s_w>ind4Kikw9WKSFZ(xTKM1sgG|c!9 zMWF4Y!T(D7V#5( z%gJK{)12VF%oRS0rf314h`mB$acM;lktjEENBiL~ePVq5YCKKwl-*qx$bpEQYIxNR z*93v|h73f0h_p&EtCe>3p)U@y`1rUR{YZ{i&N6(%f%i7H!?X!`V54=2;E&1%6st3^ zo$S6U_{7dH;wctgMPtR~KY!9c*y_?zKD}{}+l>ER!oN?YBdPY9XgW-orZM2r2O+Ua zZp)VZte=6toy5P7V93#nx=L(OhC`>r9i5Q)Z*Xbf$5R0FR}282Hhi4zE3&mWYb_pZ z6e&nXL?nKS=!OYI&tZU0Neo5FNOF0xUhY>YJ1-cO9t{n7a~?2Mm)sYkHAc>&!QhaF zPLJR9Cm%c}yX4oU9E9W!IPVY0KLeaQW~$U z^TU}L$+G*E|M3n&n_>X-I=wXIvI(Rq2Rt!SrLIHd&DxD4@6;IabN=#E>3hEIv9zsp zeLeB-=G(qLN)fNCe>+A;%6+OdOjM2D|*D>to2CrbDNZGbD_7b}iuFf8hXm{(X zba`=3in`Q}prigP7(7W-%{V!?#>BirL0$U6A=Q*OV&(PN+m^TQ`i~6d4p@G6_)}l~ zd|eg@SZz`tj9obdkQGN*9>~l{UXFP1U%KD8MA1w6t%}@<{q{8<#){p?wC(nW2tdnP z@OJ8I+MDW(@M#fdf*-me@*Tqc?|E}s0v@2cEY{I4wE$Rt58 zXEPg<@ zu8j0f(g&9b>Wq2n^OOQl>``K`UC50*Iq1#Ov#5Vjr4*kp_hX_?=b#@Fn|OPl@lHR)3{VSI3PtW z09Xz;_Z73}nybuxp`bi&N4;pi_+Cg5M#8!ZQR8{k*@&Q={cblA3Nh9H>uWgrS(@%` zutCB4+igzRMyo(UNmjnWAj(y?Prmu|W2fY8_ z74(yjd*Rp#?q+)W>1U0z5^w&ai^eJXF*%22MxVe@HnNfXN!C0gc+J|2t#j$HZdvuF zfZ2vd?@mpnPJb#}f*%DTdq7%GDOG8xyb!!;tmWLhz|^tP#%?38p#!Mk&rcpWjQ-CZ zmSeV=^5`GwnDM{&@L%3DXK!06lqpPjxrjOfjon77rpIqM8YeuJ2Rb2zW{1xm#J|#t zRXDw$xcDDiU6KVp><=EQB@V`#$8^qreC3Tpw$t#o0Wuj=TovK~8x1|>gT9M!YUH&Z&0cLbPyV?fWyeo;P_0A*6yOv(0U4MRzQ^+o&#e7h2xttc)gzINQ-l% zA!?TPlEt!2_Dxfs3CM@{Y;z=dq$zjEZ#eLtahiTihS@4}xk=QMhuw>xzP#wE(POOA zU4v~1f+LZ7ZDnlL&9~?AFvXYgq4wjNGus*MUPe2Ooa#661;anTdd|zY`YV%p(*pXX_wUhC~otnIZ&0LKBDQpwwb7)kr0BQ{l=RwaM6JA+>&478>fm3Vst10xWqN zY6QkmtBM4oGfzhXUXd@D8Y`CUcs6Im)fluPVy9K#mi(nER6I3`QI55)a&6$Rz-Q%& zt3*<%F^{@m^?_ffcmBzxwA(4qM*Q>d{s-f6wByXg(w=$n!*{2L`pAuF5`axR2&mKK zZbyhzyTPM9QZ1j%w$<5*J`;gEG|-B@h~q15Gtk@ze?roPRt2tDb>UH*bBf@H5mfOv zOy@r2aa;e1=?gz`(TxA&5dTFMu@e&!S$k#l8>ausWXT{qls?|CKlH3zCn44}#Eym; z|3=yt@t>3l;enCjdYg6nKPMLe43WlxQMn7Rbd2y7B-P+YLCEvU3>X7@v(c6ar}@Ux zOA$;`9pvJiRKvBcT0SY3fkpzV32Z-wn`Xd_eu>%DBhNr(T8oT=ijxBHjd>C|MbvU) ztfok=3Z{SouCz#XrEW2MZGy~&>PK}3`QrLpzLH1Y=>`Ag=j$5o?xyir;lK4W^pfv9 zm+pDe-Krxh&yrr5b9ZXf`w7jcb`PmK87B?1xMU}pFgfp_&H&#ut2gXEpj4u5>l7{F z@uoOR#rB--GlNq@d+~g@x1+@|Ej^y{)wbXH&wER*8)k22{2!nAFF`?zqULAjDx>M-1&1|0I7Ef7fsxIn ziBO6b_Lmso5-O6wJW&un+QBHu1H|NPKuN#^RiQWaFVV!4WhRN5q%dmBK-tjg%$Du{ zN{i_tp?gaVpp|GXp?uImf$=CHg@?+Y=pac|Y)hUbZlD4C zNx7r?_vilj7!crenXdhb%EXS@ob@QKq;8;yrwn3Lhm4VXbtxj>vaz*fuv5vrJtlC5 z=G=?u#R=Bh%s12=Q0EwsS6g6@iDaK_ZZnbDxY_~%oyxSYOFI8;?)xYk|E`$ve*)m& znzj8JHak&iWa;bxM>PmT9Y!0hoiB-u%^tvJleI5)&Pv^k|83x(*e`df?K4B2P5>rXe3%^8h(kSdN)xuL}eELVO)D zI82n6fFyNvkV`D99eIF({WQqQ`4=vVXZUc_#_-U$UE5E#XN!afsLc8$Z!fNagtZdA z;<3-9N8EQmZ7a!)QPb{>{}TfLTr;WtuMi&AJ(0oLL{o6$8Uq}8j5adke{=jxCd7^> z2=0G_UUl$&m*3iXT+%te^<$qM>fc|YA5vS^Xr|$ef?}yrhB^t!-kdPluhNYGx+#^@ zq3Xy)@+wK0?uBoEU23q<0f!!<;eMrzYar%}H~>umo2#%_f<6Jbr7o)N2M4qfuT{VK z*W&)^<6gMy2MI~aBhNSg(fbqCV=kt6!DqeijSeR4lpCN0JyhlO>R3e+I!1LatIF1l zJ$r94W#98z2fy{VewMbG{^9Ta(s;px5ynaZ{1hrFW+)Pp{#o3g?dH9v}@#)TH*$45PTJo4~_gBxu$T6%x>j>s6A+ZICF{h0~Sl>Kxc%e`LVEK5ia0?K%4Jn!It!nxC$+ zbVIt--hojGUK6z8BnwsqQE{@hJMPy%A|`q~Xiq;J|}}Ur(YRuC#0_}nji?7@!!XP;e=gK z5uZDHmv>$gGPD7}VzIb1xrRxFYyWVgaHbHLP{-Ii-`pinm9N`0x}aN;&_ywOg@=4@ z^9N!3Vk|7{fH9U9g(V-~i52h)^71yFW$OT4`!eG2&P{ZJ_q~hmx6A0#feyKP^CvE% z=l|!Q+Y_%1=GlPX`hlMvgMl0fj47o65Je7jRq)8=t5sCpEUUDaNenKbZh2Er2V;mlL+>fU}&(v)DwZE+Uy#7DqAKSlc;lI>HO+AxcbfSu*x}i@w zNWR`C0OM|;F&%ucHap|r+e_-?>86wRT{2xOq^G?7M{gYL)r@)p&?c!zhuTu|j%%_^xiQj+zXh)TX&UG?S z#TV|b=C0g@<~+JAqwu|PnqWTE$Q^7{J10I2!;mqZe1Z}uO03pxar<0+P)eOOMa@a< zTAxlLf0=`iPjmTv%HuWzfGpoU1B86c`1d#NYWVL|KCJ@-=W zsgsLp^bf|ATsty7ruTdZ-4}+&>lRgpCLwDAme}Kh2?AVhs;J7*Hk!506r<*rfXEX@ z*!moj6gm=KA0a(TyNsMOP0bCnd zEG!Z$Tzlp9lq~r?i_XC@Q>UH;l%*Dkg>|bq1x!{9jurJIJs@qN4TGcMDsQVy=+Op} z8Gre)3Uhd>BO>Z<(jilCK34c2Ui?dYXMe!sUr0Z7_KWEL_s9V)z50U_VsR_ z{_H1wd8p-;qmYusSQWGiUTUU0WOIjZY^h+324wjQ#}b8>G9GNmIBUpPf4qW?HkF>V zLF^ojCshZ>Iw{Ts;N@d*S?m-2QX_$~hw~U%2Up@n?~vO(w9# zcrSKN6!fcd3U;I4>aW&q0b8d0e#P9U9|3bABY9Y_iPb^z)M+^eFnrkNVrR z&GfS0e=Xf~+cz9exf;xj{~7<0{!)j@5$#-TU-G(uA^{H)_=NJ%DYFC@CU^TpS)$xe zbo@&_mXj1WMPCzkNBdrN@LiW5YVS{^r@lR(2axtR1vnaDa=~6So+!(h z{P;Xs$72{k^CSZ#t(LEQR`Fmort*F}Vy33N1hP$;XPNzrkG|DmLhXxElYhqljQ=W| z8V6XQ<$++GQ>j-9ldp$@O$C{0(2$@Vc-FDU6B_?cHV`y5So3W(@Bd5MM-%BG&w2c5 zL&0-KnM&Njtr9SbQDtLnjFCB^!LV}>NjVa*QW(V$b-_!b z6uI>EPSei4ky5EZ3;4m-5yH+S3G)V2wM*3vxHM${LU`TU>XFmA~E^4D*q zhYq9hd!4d-=Lh6jfF}(B$|rxTE6b;@%BC zI3_tAR|8c?jaAf9-guGu%YWNSIdIDRJ8rI{e;qNA!_JI%7l$FnPK zvO#?&UMA!)7A=ZcCY*hNHdt)-M8ki1qBv@TKjmL5V8Qc$JowJbyX&`;0l?|cc|r#5 zd5#ycSH~B-Q9#E~lzQhlI+0L(u76qyt#=qEsWI=8mZ~sxA{r5MEMD$4fF&TJehY&i zb(WDAskez>sXx+cOqYHA#st;2tXyJW2LnbBE#l}Y$Sk(M$|2@^pT6;n^r0_(obL5a z_t+E13g-^;f%m*G=XLFyF93-)bv6NgVS{OB+9!O_vy zP4Z+%C%9t|Jz5u59#8o1lfRNVr0=JO>HmXtxRvDB0f&#%5Uir~CgLNWG-yeAdS;Op z%`}SEF$L~mpip2+I1OD`zebuNV%=mU65GZpmo^Jm@}>daYqMu~V$rz96!T6co!%N3 zXh}CtsU9e;M2pG|_`%3sOfCN?O+J_Y$=~`Y+6(DTpLjpL^M74B?hlaEvt@kdr+%wu zQ{Psq?D7l6UB9={=rHDq&bYd%yzw!={jjZ+NB@8CcP;=KOo6N~vl;(0{v-Z-bx8fA z%#+Y#|DxO-O=&ZpTw7y=lyteEo98&if7ebrvV(#$`F3!a{y&{2(&P+4PQx<5-G+~I z#*1|ZLhHe^;Kd|RHc2Xs!+iI1lX{JQv1XSc)e%FDzRmGW@l^7)RgSV+`e{<(YilV+ zqNF1rwh;t34$)U}m;?<~4O7Yd-#&lk*ttCH-VfU9X!S_aWA67b`s)vQEZuVZt>aGj zP1DrKXuQ=rCnu^+Z8OSua)d=T`rl@H!-4nIqn3r1HTa$JKjZ%}+H`5j_^Q82VwY?r?2N*$%9;sqEZ&2Ia=<{H{t1-zA@^fKj* zvTdRVvZ>0cYGRwYvy}sThUxfS4FqI=!1ta0c>3_QpU__$6bC2?r|NK&h5K^^{Hw&a zX~#6B%bxxG-%tLBTiy6~*)Z+@Z?F2DmX_6w&G>Ifobm6-n@Tw2v1-Od_~-TZxT>CM zI*_E}2mjsT(^oDnXz_yH?te)u1Av3?zWne}E(fKTVHN);S}ag6)*eHas4!M_uus|DE5r z)s25S{lumJnr^!N>wZHUamQ8zUo-w)n(@CG51}sZ&NvKr^T9Xn(TYH6@~H%lskIkA z0>$q({)^0~>0X7oq1{V9_<~=19j!bLtU;b8l-tWAIK7Hfn)9^c$a%cMgKK&=?{6~IYxuL3B%};MC z4%Xjn?`~@CRPHb8I<6!c?KnGy=lRzew|(eOe(mqex7lPqeXGK%u2R>=_cH!RszvD&X;r{IOq{)$)}(#wGVK3>v;R2l z8?v~1~7xtS%68EN3G*!hk1_YylE)y0JC22#QgFUmnwXR;|=jvlJ=O@t}lqKjR5_k+I-k8Ow=tu>JWd_L`7uNR0>q$ zMs`BO$bvXT=Em^Hc1n`^$Ie#v2joq9yP0z5norg{^ZpMTmn-mX0ZC2=Q{dAs1$J8} zZ?_dVX0N^x2m0LkzwUc}Wb214z5dE~(}6#|TBjqa>dbhFw&L+LVwZ1bU%;l+DD|E?>#$Nyql z8vx{V`VTzes&rEN$x4)3j(;5ph=iz*MLF`^oCyMe9pk{P09p*pfES|5M(FILE9Sw^=x0O-(8F;eq^R}CHR`#*EV*a_!126i(&aOi0BvBD3K{Q)%)NUe>5 zOt`)W?($UgV(lQ%W^Kesu71?dPIdly^#3ofc$?~k1w-|}ksdOKZ}vvPKxh2V_&<95 zGm+Di#}+x=#$cqu4Qof(7?ITN_!lCiY_gdHq+>Vm-vq5G=$iVo9OaZkQoQZs#WPoJ z{*$y(0FY+^9{lXbojx>rCb0qCz)z-G<-ic4E(Q!q9ycH+VhL@@u^kl2O~We5Dt-`D z1qk;I2n~D8$zj?B_%K5;UM2by8fqQoTOy}Ep#!C)DJi!GP%?lrcvz(ujTxks!ql9# zFFDAK5@dwJQa`a9+^~TRpalk~(Pxz(b3FvC*2Q2ERa7?*%K{(%(#OZcXwG`zckJr2 zKu!-E*4*=qKu(|h%IAokcB=E$%cP?l^(EL5k*@6}$>f|%b-gOz;V-|f@Jr{slL@@B0~~`GsVWYb<514Z)PJ~vhQB9@lw%dyI~**_)H)OYJpnDMAVVNA z01wOi2;AIaY@yO1`*zw|z$r2%hfFE~DgK9!%zZL|G1(IXC%GwDa?PM2 z>V4B=GJcc!cU!j{Zhhs}Kc{yM%K~|ny4(8$@{GjehhU`a54d$a>5xG;k{G>s)t2w( z)HxfXrGrUO#o$OzJ^AkZf1LSu=tmy=tZ{$Bw$uARdj-AilmFG6I|t{@fCTO11k-@( zO8ks}q8b0&!#~azxfVpd2qE$#V50ua2=a!rLs+-li(s=2qyW1b4 z%N!8@64I8>QQU0wpVP(xK(6q?&pB)V@b%0}Jxv>DAw=lY^)I&9AyCM^3>e>Z)k)2r zdI0wkdjv6)Hv}|PZ(M41PDuq6Edb1zKzpPPBHT9`nUNyoV}gA)V=rxMfX&FO2PRF* zNE}TBvZ&ZieGxhhtSdSb2DPA$xcU^XQn0%7{(#HA_=n>Z{NC6f@JM>#sbyK*IXJ|BQcM z*U{tO`ZR{Tg}#0OlKl4+@Mbz=tqo+OK>(rNs4+g3%MRdQ?3gF(W=Hpe%QB0Xv0FZQ z^9Nt>YZuanY2yGOr(qW0s-eACwxAP&t7;jIA`y%TIIhn%U~6ja0)Z#)dqFZ&>u9tc zwOZ#Wh;52e>cc3mmgFfTS&_WcWTLK|e4TEz*5#QAf>>H7#|)E&4s%+XUF4ir^AlUJ z@+q_xMxCxLPjBx0ue#xyan!mO_6Ouw@$&wF90+9E@+?IhaW;AjBMtc~GP>6(_n^P? zuYAreP;W{gU!=$RGORCkSn~H6w76%)#MT+tyj!R%cenjQ>?>#{YW!+kKj_ z)h5}S3!G4=%Ht%(@GL<+LPMkDMi)nh|1KR6EcJrx7=Yn(w7q@2Z{yKF*0yna%3FW* zHA_xEi`?X<7XbjyfPy0NSusMgc@e_(wR(rwMS$JZHJ=hKOUPf%HA!u0Mg42r8}rl! zpc?HF^&F+N)yQEAaDkK28K=#4htam&vFMVzdMlqqeMjGSFz7gYR1l@WN^CzGHJ323Mb!#9&`UQ=tDc-^2+MoyveJ7zQ|#wbKdmI)9(DHJ3l)VJ#Equ)&M21$t-BW zDKNT8*|B^=L)A(rxrx(An>azu)2r9rD~eln26XGxNJkOP{Y?@~{q$O!G$6v}r|6w> zxaCZvmKxdHZR`|QbOba0oAzh?A07UCb(S{! zryizB`(2}Vps%&ZUI0LPZ)7uf`U|8zlv!b?J`de2>Gg5Y}PUA-#|S&X0tP^-*nT#!CD6gWm4!<`W^3#{~7-~hyRuJ$oI&%>r7*@(shoscFslU zHc(RxCYl+LwRX3{u4B6~APD8s__uu3hhO;XucgCG>r7-aJ^5`v`q`n`{k>;?U!&Y4 zS|woRvG+{ts$l8WC4Pftd?0{?tO0b+a3{VSPvI2~STSmh-Z9fEd6iS{rVaBcT||AS zitX1&9)z1Eoib&V14G5+oP-;xxq4d1WeGGGoX-PJz0bH~US8RolTUg7L_U5wCb0r9 z@d^7l3}@J6nejj4e+Ti8w03nx8;W(6omUz(z^Rw3?4(;?sys0F&i}!;MN4bYmZv2D zRzjMh_uyqOeEsQk1ZnMW0ZgTI=kk2fjZBrLWDGEdvpKC2G}AH{Y9ew1qnMD7lV70k`de-sceek+(8*obOmW|} zQFe=PBjH+pdvi%d{fktf2AJZb&}`EALl z{*#Cx>Z8C`BJNlm*D^^ZS5I@|=*NEu!cEqBf|ENGidpT8`V$Q&dZMxJH-% zNK4ny&7F*+j4>ZX-l4qTTxC;Rk+)I}h@h6O#_CBxaxo8B7}^li;-jG|s@9c^M#M?K?z#=pzx z%kL!q#dbu`rE6_}$#UGMA@ZP<{J#Hwnt%!sbjo@PBvFV@1s98<!;1prknMh>oXn;NN^JJK&Joj ziQi2>^!{HQr@rs1DR=%q`une=>u&z4jef}C#H7ujC$aPKkKHJx_^0A^(JpPok06`z zKjVLQ@Go~0lMz-&+)7uKq4EN2{*o`wWSPuJ?-M*zxxsy;x$sm3#2`$?C!6FAgXFJ^ zJT&k_JxKSZDAJ*=^*C zxqJ&L)Myzof_LR1;&u_9+$U(d{#b~sm^{A%8iMcmtV6VutBa+=+`|l3Qf=?Q%j?eg!)2!de7*~n_N&I)rJ@WNX>PAOW<{X<45<@+X6eC z#*zQ;my!QcMmaSh2FB}vOS2!z#W2bUCI}Zv?c5YOh-=i}6hN8v=wTRwZ+;a0jmI`xtWwXbgqu3Bt{$^T4&dCHGFE4r>7AVkpqG} z_Ra})3|s)fVn>o+8$AD!-+#gf0%hb6)Be$ci<}5Y_uj6&Hi%Z)mE6Y82YS32|1tHYA85v4P9>v$y01R5OJtA_!9%;=W zcTSgl=!I{18XaXitdjtz(zie7iI*9Zi><3QKq6v)3Deb>-4stPY~UT*(E($&bN;( z`KL4fXZ-Ip{w?SrBD8%*8bCVvIs~tlmt3%;w!}nUzFx2SNjV@3?+`C4|7O8`i)6(h z1ZRbwgD3GxhjrrLRN6`akO}#=XFcvOm={kc$5u&2SXGh97`8m@OwJq%yShe$XIsY+ zB}$%!w81z8!1rvGwiMN>t&7rY&c%W~CspYJPBS0aM- zk6k}jc$?`z{jW>tf{(nJZoBh#n(AzN+D1pe7+t9E(yV;ck9;;A3-|1F#{arBb4CdDC36B& zcc~YqebEUd?*NwuhjN`_1fLwuy|uT<@SAkm7e5}Jw6a^&(KL4Ph!5;UWO{n+WYzIo-TgJ$&^be=I^%!F|6aqt zSv5*Hb?7i2wey8`^T)DI=nKyg4^g%`<8tX~K-=~6 zDn;sZj!|vWB0PMMD_u%GmAm|}2bGj#v&zMO#cvTTV}W>&wpMwD`cl%xMBDNoG{oys#XnhN}6fLe!jyiJhVduB%#_ zh^n73zD-&WM$9?c=!KMKjG85{jkC&!IgA9)nb6@x=(uRym7$h4CO`TKpRIg74_-e$ zR+qN?=pZFo>BO>8uTl1mY=8{Mz48Pj)Kd|_1)6K7+2{dr9Pm-9)mlbo>&;(_yJi-&A9l`Pn!m0HEsk>bfR)k zMr(fU(`u2Q4^`l^0aLXFK1zAaJXtTn=;M$+$)A77=Zb4TMHhYcqkH0KhkGec_rL9v zzfV7P>A$1vzy4KlhTL=xGFmF%8z-y?^p4H);QFNDCm4A$9j2xouBKTn655&Z?|GW> zzx(({n)F$?k7g@WXbuThxEOmew?_6%Q5P1DTl>l9@$wQGrdM6|qSs$UTTV`or0O?tGm0BIcxUFpFkTRhZen}X0FIns;WipOS^cpNHPJ!+d6Up` zNhGU`F`pxj%z)cAa1;~sKy(|NWJ1r?v~42=_*a`~ghCV|fA8RN?N7BdA;b37v!4E_ zsmIz@-KqmX(4-CzC|h*cz50ujvl{Xb4gJs~zkhsvaJN$)@n7_rE9gJ{@dt)L*_F&9xs+&9$EF`A@7I0kMQ?Z|?LcDM!StlJzT(P(hcjJ+jE;bu6Pp4n1tV`1 zfpwGQF96l3EBU(O6i&yjIYnWfw1S41dhI(psR1j+h!8iRbVctDVk!N)AUXm zFxG8ri&!sqFcIVw@@Pcgqeo@HKvU{GhwtIA7Njvc{HRB?#|PZ=-t?IJJ&ewO)UiE7 z;HLW1!vEn9f0wTO@~2yzpyHxzQ->#gXsN-Mv+d9UN%_zxuWX0uFzjo_|BU~=hkq~Y zl7U@-oPaJ2Uii!F0!McRX|7DJOqm;ADTkmdH7) z2_q`Te>gSK)F_q26Rns+oRH;!i1DW7A+0VsMR{Y0ATXm=J_1PbIav{JxV6@33}%3- z0jL1pc%kNdqz{vhR*2ae91@YUVqCK^t;0dJij&Yly7@9oq4}AcH}I9-02_q^3~(!zRSMw zhji0z-ypG7qzmWM%d}`%ZyE+ZYqq3!f>|WD%DLw ziw^LI=Zmo>a{@!1`GUJja)~SES|C%)8f6wAy0@1!KJPkcw<)p*} zrx)VvPN&X8C*OYZV=g&=yPN)E+Q2H0KArs=uQ+EPrw>GBI4Tl3GhZE%Q@@_({%T{# zsUW#__B4LTjuKkYPAR)gA#d5AON5(Jq@0G`k~cipo7+ek%|2R99L|hyoFaMp@DWc% z_a*v`=U=z{Z06vn9Z0Xd?WT33W?%w=9BEnCIZZu(;Hmc=_YdUiPCe=FV_=ZK-#m=w z^Itxq_vYKaK925v9j%MFYJ9=Z=|B6LmSD~wpuOrH-G;^aut~0$jChqfIGWu-oGdtW-L`s{rA_@u zZ6H}yEcRP=U?(>NAZ;?(QNJ-Zr`-_5!Il{7FW1tJ1QE$BXU0EuxR~+p^13!V=>*3A zAfpS8Rp+16F$(~4`p6Hy;We4TsKIf>qROym1_M)+tnc8xdXH#1%pd;XglplGXssv?ph$D_dUvh3& zy*0|V+d+v*bJMQ2Pi!4Rns7j&R-a5~snVkkHuZRKosm%@_c(Sl6rGUO$$^gYy$nqW z+EOZe0vkuZNTYU+GL}!+W=v_~J_G%hH`Xoj z`K6tdqJCP83-2@jy_{*rzdpUI;D4AMxnP*~e+?bObW8()oIX^8fVeK{M*-r14$W*q=txkqI21Fqnghz{M49@-3dGu`6ip52m15UE zg+i35E`{Nu?ET!PvN& z;76o$Lt8N0sP~k&>X0aaGSG&*pA(L@m72&$BAjkFXIn<%HnpmItAdk(SC7aHF!ep7 zqfM=!P!8TP`VP%>3{ngl=B7P#TxLGrW{ch7v&aB<=#yHBX8bF~u6+u*X8gm`69oUm z_ha7q=XA^ifSfX;i-BQ_{BuHJ65KOEa~C9B5eido;v#e!F}eEGNwKfFstXK}14v1u zY47MrM_Wbpb@~-dx7ZZY%wSC7Hq3Za$62PxiEzu7udWd$L$1)5GZcQtwL~Ikrc!$Z zVIl(o`eT!=++(uWq0qRwx#IMkc?WZw`sv5`oo^ zQZ;1w(H7bZD5*@ezOr>!3aylMLUdp>%}w>|6e zSsLdc&~-YI9bVwf>tfw3n)YQq$=5mXfl>tTwF~xZrU0m(ogEKlmYtvr! zn0h7-0@2dD; z@M}K&_up^b(OBEfLZ%OC+|$C`1)%a` z-${K;sgTGW?BakU3JAN{xd$wH0QCB0%~aJY<*aS?%0nJehRzPNBSRf<+r2hoYGl;O zknEXrE<~Y|NUoT#4rpiJ7}}JM@{;c$rfek)o?Fr-(BKFJVw`!1y7NvLXrJ+~`DXl| z==dK-{=3-u=d`Nh+R?Yd4uslnBLxcKL znxbP9TKy*lXXt^;>+49tt8^X38v5Zd6w8F*51mhln0xJv=Ycb`zB&}Z$vCKN`Rg*y zOpQZwvhWk=^2BVRcBCwxfm)ehht$|r^1MoGlGpVcx+j0ZXnP=oNn2@c){l5y>MD#_Y-DZAEvTqG2?&6zqN5<<3FYIKl0*Zx7&Xz zG3}A`q~CbOIZI0K8NQxoce7MeN9e7^paLho9IZxY1jZE5r)a=3S~dcU);SQHauq&g zEsI^*2+B%Rr}EPB#GCNM~@r zQM9kCcN&?|*z>OK5AP7Q9d=jejK5NsJa0%J#d|A^h=TnQ>*x?^>eEByr)xJlw z*w30`Vq=A(rqUVzGyYF7{2v;-*waux_2`cP4~}J`yvrv!SDpA(Y1-5jHgS^ZMEblU^^+PYyieXYx_()UN9u_$M9eI_JgZ z6`S%SCXjC=&5u}`y4Or2dnY|H#^cawX#1rw?xV_U~B z{)anPowCO||D29KRNA5R-EVpMuMS3Y*uR17BS4Fy+eohU9BnjL^29Z{>FGaKkRgz_ zC1xB!;V7dw;^>_j@6+Tsl*rAkt)~6RB5tgAn!Z*)zO5+^Mm;V{6|3m06M9^S-knjK zuhS(ntqqdNGZDe@ptXe!>O$T7dh@dd*rzzH6*?(-*0$f`0eP{yD76-?&!dqVc%0UUg+7q@+gCZz;;O&{$;W#Cm23luG z)Abz=NLIj=c!j!<&UQ>vQqOrE7J!`|rk#UZKLiJCl@M7+(TUnO1{Tz`!s)`!;_;D2 z=(HLD)16qqq^()fiV;*_-mA*=>mjoJ10_i(C$`c!%#=EMSl^C!gf0Ek?M%rCpKZ`V z&iJ44zas5j{HH^MiC*vre}DHk`%R_8a5=k^^1c8*>7)+~V%_gwhY}?sFkVgcL1&x_mAbc_RUqh$4x@8U zvFzkXC{?wS+f=2`h#OhBJV8b)1Dh&iqBakfGfVV1b~KZ9Rxz-c@lQ14|2V+^u->2U zSU&S3=fCj)?cubi_5k!!-WTvqcbxQ?L9iE!aXP?MW2kOJ-EFy7jNaDIa1Cs{1JSB) zw~0(O`S*~qZdtE$xmijufXbrZ1QE3vQ~5A@Z9UiVCv8Jxgtfd%g3|Y4Z?h52Ul- z^0M;=f?qwzeZL4DL8FSOxB39ChS2$`(RRdP&Pzar&M*~k7ou+N=BH|g7$@Rr2MrX} z5~p)LjlNBzJ33g5QUU4Iqn(1o=dO&zagytdkd8nDk6ciU-rG@WtG6ESHk#okkJKRm zZ)NP|(2MS4+g@(uok@>or#EyG4A-7kKdPW^=ZJLW4M@(usI_6cCwaVW_By61dU`Tz zX9?0u47BgqH>=kj`iSHZB%=#uGUI>7|L)^|xIDCE+S611F)6j{E=y%J;ytPo_P=N|f=cz-Y$* zjQ>4>f96Zl9Vef^*LL}@OH9XUin9S4@wqe3TgL+~g`#megMg8ZvvG*X(TL5^ThJj5 z{u%D$rLIwy@7^IvYTAMJ5kOP*L}wTCO!H9X&~bq1a9y2+vW?q{?L?=pGN7d%q|@Wa z*+ChCjACj;=i2jn81Jrh9z@aBS{vZWJl&2&Opu6T0MNG~doJ|abFeRPma!v^Y3jM_ z=%&)xl;8|**Urj43%qta)SA)N=lt)C{~7I?KdJ%cag6c|h^!8z7Yz~^1&dW{0}}B^hsU%omHH$? zra)T(N~}ldw*2dp@kjvBC?j?>$#>rdL*CTmhp{}C^KB9EsEw%u#=J&T92reB-=RSn z*+ef`kEgre0mpnoT2~hA&(H73iemwuVAmWmt>;5MF?aPpQL@@6Vk+81Q=SWttaHCb zuS95jrJrKkiIxcJM=5wrOsjpy|8zSw?~MO#;s3qgbmuA0{Lp!?zle_0w7C@aaC+h} z8!)Kk)x+2Q`MNcdFlwl{ZXITHI@FEk+fIN8r>%-_NGToxI#o8(+3RHdGg61_tEf-( zd9RuBz>NTOsDN2eZeE5q;=v;@eJ2qkEk0a0VD)pwsXZ+9jckFH#|Fk$bto5IN`5rmW_h=H+36!4jmY2SAVCl!G1_G;+ zO$D}wyGhER;VM4?QLI+SXPIbX8Z#$GyZ8q{2v-FUw8RS-uN0iLDCLDYj;!L zBuM)fuO1jXj}AA9ZN+qyAoPx)b+pUnlKiNWbTqL^TWg(8Q_y!*Q+1d6);YvJovkR> zQ--obhZ5UaH9|Vl)V3F$N~E*opb7f>ZA?jE%J6z=l^mw)+0>@ix0CNLsoPGf6fhkI zOYLZGdUUs@Ccy)A&WDv|{JXkKeKY>cbGqPe%Tr!^$@#B6L?=)>;Q|0j8rn*jd6se8Qr+C#F7+P^0 zEN|ZK(WV*yM#qVS{~_<2mv=5N$mh|}37AgU06^0C3xmUqz@Yf^);W!w%&5#%$_NB= ztuyM0=fProbcl0m+w{--wA-epsi>TsgWb7=({_42%(^kzFLw7vE|EWxf$uygWUv9c zWpo&)EZY$nb*43K^xtiMf>s%Et?P999b%7H)UR~ZUf!|%I;Y=jr?-|aGao%(FhH7m z9%-4zqTEXTdd6v9>O5<0Dn6U>KjVKL{uj(c$A9Mu+wn`2=bZj+|p1)4J-@2-qRou&YAZM*a?O#6RO-_`0j% zf6(Kh<*>$oB2M*BrA<+BLZ!3c^26s1uzbm2Am_-v$x$77A#E0cx7T9KcwYM9jLzbS zs3}*oBx{fe;?fh#sb2qpz~POesu7?_J};d zSJ7^An(C+M92x0p5= z(Kh^YCxDS}69LU+=P^M`Y)76)>|otQ(MGY;wt#FJZzG2kf81sho0_}8{WJS_DlyGzOlQC873c6``HbP~QwOP>*>i@Nym6ZY ziX(uUdwhn|fzDtPI=mLZB^$#?l_uNqj>tPue=T*f@2I2`qIRmg+aaXZSrbgd^%8c1 z45L7<%)8NNsa56Db2vh~3=4as%+%`+Pzkdvc~vs37tRypLUQLd>frKz3f zs2`I1iz6R`0z@;b$TZ=|ez&iHpSIxg@} zd}y$lOO}Z*;pOsuC;EoIBS~`rut9parFyu3%v(WEg&?Pa& zsppv1I%@Q%6sI`*j=T$+;1uJiZMyu_dfg_SNxu^t{nVn@A(%5O-#p02Tupni14+(l z^*Vj`Sw|z(r5^P;<#gIkpxc3jky3wj-E-6}ZE>`2^(;rr@FOVCPoi}lVvh$b(FQoN zoj`49H3n#<&WN4$fkJ}%iBd;~6x!@}(rF?u+>ws2wlm{@@8N&=I5_-!$?*8Va(Vlu zA3Oiw-DRitH%)T@a0Ka`H@)(-Tj|y_2h%;1_R&*$nNAym=`#nDJuLzRzjwhhf|5IW z=yeYEtnC1x%1NNaRKYe@-*#g5ox0CjCx|ZIPg%w`dl7q=HsGo4?C^S3`Ob3~@n9Qc zja{C^$qddsF{e)Z+Ra508@i+%*oo2;JI7TrvN}fxz0`ol?xksalsx@*LVMLtrA|N6 zPhI||NBo|4TmDF)eWHG69raJj*C>8HVJnCgU}D8JJVIelLL37yB)ZzZQ$ERngf6>rg7K9=c)YdrFCv^ zPFqYRK%o80VWxl=%ON<}ciNzV{R5&-8-|pp4$*L~nS|8Zpw>B#KmC;GCLIO^XWF#0F+Y7dO$98Q1{mEAZpC$v7T5R& z9b?0u!SCRC@Vpa13#{@A4r&2>(@k!rv|c~*hw zj`DRM?bi%xv3~^7VpQa51GfIR@&00TFsJ3E3F^36nJ>-Gbr!FmPMp3KsNN2cWG%7rsZ(&Rg1 zCv$c1o7NxO>P&I_dP1$!e3!#@;xE937O|}m}&8kN<-Wgn2v_@8Hr?bZD4*{~9fF0Jq3LW^hn{SpLq^ o-ko&kp?$P(oRXhA^u3$@e+xMvon7V--~a#s07*qoM6N<$f^BCf;s5{u literal 0 HcmV?d00001 diff --git a/desktop/buildResources/icon.iconset/icon_512x512@2x.png b/desktop/buildResources/icon.iconset/icon_512x512@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..25f34eb3e92ab5f13741a9dc10deafc502ee79e3 GIT binary patch literal 121111 zcmV*OKw-a$P)Yyox)Za ztu2+eg6O6 z`m65$*sJQlXP>>-nrptkx#n7X?R}Wma%{^t-gW22>2q`KwHLPA?FD-5F`{#HkB@uuXg&h&k=JKk#jxht9Z^7?k(_^`HCXDUTmP8ogeSM@Wy-${Y`al{ZjH5N<1v-v1)*cmhGs0SKWdA=aV~Lx$0%6$#f6Z{&%<@ z;$Qe4?`IZmyKBFh1bJ{L(1Wz4Ij-z3?Y{Hw`?j^)@V!oB%lACCi&N*%?;_G;kKJ=U zT~Duj(KmHGtmSx=gD}39BP`!|*WbBF=O4RB^4P_#oV&2u$b}usZkbTE1K7nKgfC9@ zY~Z$_W5F#4(l$V)piu(cQo!wk%{*vQ3T!r5)&Plta75P#;sAYECyM|d)TA*aJm(ZS z*e}tT>&5Y&fs|c`2hlx@ENL*^ec5apO-x{-=Qx^F1p`=@2oU5qO`y<6?Hdy&OfHCM zpU!;1>g#|eOJ8_A@-^At=K+4v`W^KpsTL<3)Pb5yyTizLm|{tSw>DgQADM3Q%gHA; z8y~={?op>xIW_p-B_nh4ApBrUB6dlI$i3SwKX{HW-6MSdL3-@`J>Rh=3{P4)Y;0c3 zA<8ts^SQ@vm2+}ohv*mXod3cOLbvXeyc_6uGj|#XPb&gJgcOuf_6I6a6ypGd?dJh* z%GjY!%krVJe%1l24oGvrf}pV|gAcxq_k#urp_o-2JV5k)k7k-neG-ia7T!Z2I#R{; zgVd;scrN2=>a$qvJKf&0?>n6|qeb6!= zAM!&7CoKM160Id&xAXbRVSH-E{~rABRvmW7Z{3}HaF<8lbLkS@yV>$vcWa$%f^dZ8 zFmYimrM&u=?!55Ghw0W!w0Yq<=G_1c(W;8Xy|(kYFCmer-byzLt}8krVkM}v=)DAv)dGZJR6M`dPMd7?6d;{_Q? zaE!4bbkpKiX;XDeFst&~d+aL<_NlUr+RZvu|D!T6Bt1AQOt!E+8k}T619?h5K{B#; zr=x-24hM47I}U+0aoU%B;NUmX`Didpz6FWE;w>ad%vStAvH0JW-3r2#9Bd!l-4lJ& z?)=@?fBa)_ech+M=0RG^Wfi8i99aJBJMP>K@SB(J9QD>+dVHJD<`;tbJSa>70|OTX z2(MFunx+1bL8pcm7&CCGMsvdcywbv~s0MK<(a>p8EIkr|*hq3f3xQk)p~d^8GLYGL z3U!wm#b|)ikEMR1uPo5Q$QlC@QI@k*t>-YXp}(L^CUZTmEah3^Ah8$?aG(d^!}Ovv zy6ktu!FEsb()m$sOQQrXtGy;Gg_jOXSVn^k>LtlQv{zQ_3yUlyc2xAS;{WR4f45Tb z)@dKZVh(rN#!|m)Q)qXC z2lc*Mm#IesayN4?Hd?wZAj28@I629_lE$r!!LdKO@1&#*xbb9cfXx;ECj$Qu?hf9x zVfj8exBZdt_^j95Lu*NeX)SYk<=gMPZ9}_RKGW^H8(0HtKA3r?>_g?W zwZnvk>TDYN&9-0hf1>ceTOru+=1uakOW*$;FM7?JXf0{Gn=H)xl|M1Qc zZcC0=9Sno=bh@AQ%+7@H^dK+!o>|IPM|rb1&pwMpKu+77zb18gPd>9>IOIJgD=(YMz%(AvVKMHnb(1&(^1C+ z9CvnuKt|LL7E87y8U)b+-7cvBU3*Z?@|aBd(KBQzAnDjOOrv0eIz}K< z+`sFCrSyF=C;r>1df)J%z!Kj!5ZKaex(p7nqa7m4ppRu+As@MJ9yBP+syY+owGNWX zhY*GSwGWvl#H^MtdaGrL4?Le{?p~qlRuiNH^+80#0pB}IgQTfr3%Ja7DT7xR;GsV* zzEb5_@qecAzq8ssyMNzA*IfFRv$9`+>6DjmeAk^9=sH2v+7U7*%OxJ zoaA*{K$P;lY^E_f2ZX5w^WI1^%}o!AV95p<*41e$14W?+^?DwV{&+C+YhBhYspWF1 zZE3OHRAqX>jtu1}V-!BVrPsPy*&aPN2F5{q4q)-ZLk(yWBMmJFB9sMV_u>Gdm2+_J z`^Y*2TcK`KAoh-Zc9=y!!1u{?OyS{)4kthzlqjWv-Fb$jrqyzd36)zfB@u#pMJFr% zGsi3b2YP-3Un8eJ5nwu{Wg7VDqnkT+=70J0y*?8@2l4q;x9w|ys%D-t3?LYo9O#=` zzdBw-0|C(1x>&T9uXBxok@?Dl5iJaE4Rkx6%Hudp^;vFS)Q8v6U2pa6Yc+rX9cw4? zu8=-{?0X>)r+QVcyd>!rJ1Qu51cE)ZssCPdCj__Lt(NzN0|G9cYEz2U(nFPlXWL$} z=`#&T%LRFLIVIk1*bfZ@&+U>84s8j6paVOX!D@sl8h)<f9i!`cg{lX1l#%lu>`=LIA9%d2((bbIOt*nKldz?-I#N_g#zB%( zzXHJ}(J!4!84PM^ZS2|d_WE0y&%@HKK)|J}0$L0_7B~afA@$0J@hna94kmA1UD148Crc`;LRp=?p<-A$s+oLC>nrU_=1^v!9hqkTPmwab9 zNWcKOkDn11M?BWD;(x_|;Q;zu#{aIo;n7R-EvIe6Ak!%-U;p;kzjkM=SM&S|URuap z!D%3vV?Y>&gc@w)bR2e@tuZk5?a(=;RO%g<26Qr*>v?<(N82};(o*RIGhzZau`g%JUOADU#EU+9M}r{M0UK!7RrXY0n?%q88pb=w6@k=fOA(?8o0o%$ zP)A&7kMvvnjzG=Yg>?3*0llu;5)B3jOf+b$vlOIBQXL=1wMy*=aaDPtjwkPv^EUWFA@^q<`-F=Gvdx+`TT*Q1n$JxT+zO)r^%?$7xhhESpN+lg zl9ZD*fYXY9TJisc;{P7m@Exb&sR5=FTyDSX&WqQc<2!d&`NQoDKC;t;gaE68fmw!- zAiQsv0L|clsk9R*$Wez9-IQ20|m%b-><7qf1ma(&=V3fhNg! zSNyN|fAa9ZyL93=3NoG0@(p*t{#83T-a*qZ?WHJ1$(R9rDKO9iU%KElx7ox_S{Vcw zqfr22OQ7a6U94~rQs-dd*ARqe2ag#VL7g=43?lpBTFj)DN-&b^GL3au1|}py`7{I; z3>4h!c`5L~kKHT|eD;-fo0o@@;}mc&Eu+P$SYoOGnqR#-*w2&b z(ja1Y**_3niXI_TcWM}rNA-}&5kN5_l+=0pw&f;o8r(X*f`O%sTx#$YV+ENnEI^=2 zmC^u9Ia(6-t26SBXfYpmCkK1BN@NCpr8gtc17FI0_WA+aYDO^*x?RKrrf@(meGp~W zOY-Z+#USSBs)Z;QQ?09jY1>22P7oP*LSC~K8`4s2J048MjnUPO{>4Y_t7?@BWUVrL{g{rpZ(I;4F z{cc38KPSSOWNR#;8`D!miKvyN$eQ|*q+<>_L^t~o=!HUN0b<6R%HK|RVUfHSaXt2t zkn%V;>juFO`uEA1`%G}Xok#V_Lp=h0^HP@?X7mIOLV32gV5R87{ba@eihnv5_}^vgx9!HJ|M+!pyYqHB zL51lAl-;cV!fw`o=T6tR53}o3BB)rE_S`arR;YsH3=|#=Q-z=>Qu+f2XN!!;MrHRf z*8pH?dX*S%F^>s;`#telI#TBIy-jpxQrzI9PDR$rEDvU$O^34Kc)mCZhn*o^FWk-8 z8tFW5z*(c-EM~%K0q6>sQZwIWsX58Y-LcykLtdS|R*|~cBU#49M#utOOMZ{b((QOF zRNl&mw5!fRUnC3HDP6M}@jT=1u1n@UJ3#iALbor2Yb*X&{9CPKivL}C!^d5c*SzjU zuX&J;d0{%{VP+CdI45e{IB>w8Tj8-y@#)nFFx)Y z1dsJCfN7&2Jw|Wb8RiynC@?WP7kh>nMv-thu}~zCd~*9kqhc04=arJc>7B;`jR7gp z=j=_zZL3QQX*H?A z=EqSkfKdzuR^ZySVX2id~wLovk{@R{&gCMwHL9=SQ__j{9@3{&>* z-r4xfFG8`UN5Myk!~Iej5;?eOp4_Gy4msLq~-c@|-2}ioL?5=-mTe^xKyC zbZ8L_K*-c6AoI8nqGI<7hkV!F{KstSI$oGTCg1F+R~}1&02DrwIgh2`sH6I~OYxpn zANU&o_VSfH>%s2=HYfv9(!C7$uJQ+s*}t~-$Rx^;`|jI^E{InA2mKZQnW6n%I*?yMq+u8YrJPe><+_Wr)rM8RAu@4*(eBx|gH1!@0%!~nf6yPya zr5xaZOYuivGB{gbIrs`?3ok0A*^`l$*BggG20j6VArosOjmN)LSeK7;UYQzj@0)Pj@^v-64 z26yez)D;N40Nem!%{qHvHwPen3t8(gmhRNqJ(&jq1$GA~rk8?paKGW;+iNA~Bf=Ne zp!}2rOAdf~A_up`iBH<DNe5fP7xH2tAMiew$;?5h zI}K)OkhQ?I^_t@5%^Hy!fRoN)c<{i7?-yu&H2GRZ1`g3DWA?>_kKF~oMo)?!NB%`A z>A*p-ZX$D?%uD)|W~r#h9PAl}FY?s@0?(p+ZHGT-K=a4MD39%C1{WHS`f8Z(Ok$^X~fQ^s{sT;U_llu zc-?5JpLqXFF{=>>*p^TVxEcCP3t-ZmtAV$*AMrBn$QJBBfhF$0HGag|t&U9a05k(1 z0T_FvEVMwGX_cnkIkmg3If%w*@EW!-9p!o`uYohP!Q``(Lf1?aeOO&<%#?fq0$y-r z28%$7wj`v5utx?MWc8qeT8n|pyn#H}v?X0@BYSVf}HW{2#_NE z?1SQdV^18!Y#r+=yGbf4H3Dl~Y>h|&RMCq675}FM{}(Uq#<*ABb?0q#Ov0Jcf z2*!~fjzT6>$Zg+9rH0M20DN&q||p_mO>*j9gG&>uxz*NfF{qpGW-EdOdm zGnxn)sWWV!4C3;j$%XxzUQus-P$9Ucf|%T99L750N{;2~nDM)hF$747+Xo(ii2xr= zIH%7T+mczK4D=GApMBu4#*6`<$cpls^6E3qoPf27kSTawg6C)uv;}nlWderO`?|fpxNq6` zfsIQTG^FclphuS>b%-+<`QVEhrx|FF{44<6B+I@y5%bQqWg_EOm;9=HOD~ z7=99ZszDPNbcwj~sLmSi7dLd^v(n&v2@t?XJ)az$OSdWJF6p)cg9{%K#8V)t_y9mw zl^Ji0a(971D1P7t+MyuT3_+Rl4^y_tUIZqw_uXYl^bd}09 z^WS~EmYde7k2uvk=0jbf(u~owQ^gGcHU%;&0g@;?RtmsjRYX+;VPL0oRtuaZ;-pVf zzfGVMmCkt@0*#O@1b{6mavT>B4iGi?UgeT;Rfcz_r;8){Sf%K?4r1NFLNpu|P3HM0 zZHZGAFZ=k(epS1+fD8e)%?`SeWCWjHpMwsD)so%a*L6ThGwB82WV|2B1D(-Ask-8F z4bP3_2F%T0;d@tyI;Rs_Ln<0Bk)5CHlN{k z9H!UE;ow$B@^`N@1(ulX2d2otHh+Zn{WcZ19$N;7eKv#1z~FIj%y0Z8r}2L9Q$_Xr zqK%Ht#XzRuP#f6EPz6Ut=ZrayOF-#$oLcI6TcY*AI?rYnx_BeX_q4w*oa5)i@-^nMkoJ{@TUjnJ9{~A58dF3MdM13%{>2)>t%(f0Kr5_GFFhkJ9sLiSG z75^*#SNzZ7-0}5oLj0tcCp`gp<-F{_y< z9zvjpu5bo-8%`uG1A?AK={hg-o7~)S$NHigFk3KS4K5Zm=3pz~2R7Y}pb9~x+MYNC zRF^*qjfdN2trVDI$ip_c+uP{kcYzshZ-hqKAI%cm6Ako8?S%g7ob-Nb`iKoru`%@E{h*nUzt}*8uDZW&lDfG!77DM?s;DEzv6$zzuWSvBmqoMVrd)xrhER@ zI~V0PXPkdTLiAgrV8%nM_eK1j%sE(MGn+whM-yoyXyd%-JHkmp%RbG3fLHq-(k{VV zoo~J(8YFC$bf^mo8gnCXFsYs$G-8s*`G-;>U7 z4w(DRJmi4PMpz{2Ah{dp1vhCiQyw^|e(!bM1&@x)gd~64nxr>m5mC{y0T6%W1MkyT z*;^}Ke8_B3SA|>uu5#Cao#}wh$#hucAfkF>aVh*&9!LEJ)q$;v(3=T&o%7gv7W$(- zjt;V0P^1`eCj>F^;(*)BybwUOe@<9!bq4DSwBmoo|BC+}|2t2*{X1Xy=l>x+35DrN zDAP-Rn9se@zK@lNB|9$!5KEG~47Ua!vtKp?f}{~h!35~E+7(peVB+%VMFC(&5JZQg zOjC5XXcvH^9TzZ3Tu?4^AV*F1wCdH~c>_f4dJQspFriL=BblRR516c*08O$d>dtfm zI+LQ0mUI)1{H51NhG7Z6!DG@=wsoa1#Q|&3z(5o{M=-?p`)1U2z_1#GwGt2G_9Obe zJ$(=eEG9A0CfP@*@HF!E-2aMyq80yV5&t5OeevIa(O-NMJ;88GwC&C#@7bUcl5kH=RTcyq+a{$QzMcy-r=W`q? zL8H{5L6n1CFqVPYWC+=LU~5VI^s_btzJ0B7WL|3Uq`|C1db>B-Q=8Nu5D7Dx4Z`*= zdx2>Ual@ct*A@cY$Oa||4zPV-r=-sm$OuL=3wUL)jDEpisrX0Hxs5=mg?{!`gHPQ5 z<-sUdZBlj9>zKM3>!|LEe_HWREB+Vo|KP{u(HFhpMStlYdIHN6x(V?1yS{CHxBoo& z2WCJ4`g5Yx`*Ay-H|VgRQv#8V&L_Aj*N$7In!Q>eW#=NCV>SWX@=M$i>-ZrLC4_LD z`H{Yj6?8HIT1M zLzNm^)8MM}A9l)ex6ymWKY7n9{#X1T0{<7T;p^TwjiK}emM1g;xQ4F%zMVW5!*PnC z=OvmriNF?&7z~D_sOvz4aA-}N(YoI_32Sovr{oteVjJq*Z0`#1s4N(MO@1FZv z{rtIg9}Py?1DyFHkp(;kmfK%rj)SnNS|rtuphhql+NA;p%0BD?kP_6`?An6p#u>nu zq$o9B@lUS975}v2pAL=xi`UR~-%C$mdBPHaSKf8!ozqYHhEf@vSMMolU3_%K0H~mq zF?FGEuy7##m!Vqwz#obbqP&zN;kbw;qsIk&>KxwLrZ~5PnOc2zu&cvbd}9um0jxsd z&Tk{Yum?Vr*P@oq2+X^qe?*N12W4n0uwqyXAYJJfgvQjd1&N4t(tb=P&QN=gi<&Cl zoEbEQa-hRaIvC_q03%gd>(3&7iWDMf92YI`0n#R<16d35ra6H+?GYx1z||;o;@kCa zyX6J_HIED)m|J6|A9UE%tM2djNG;IAzlaGJ6i%7@aN;$vF&g~9)5r%uIAhOGyX{g? zUGcx-f5rdh;(u3e{rbD_ypx`w!t?}`dB^{jUgw>pfB=yM0z~3S#FZB(Y0yTZ1EPEj zi-c+bw5x&PIM=F(2f_h?)@Z|h|CPBUFvYnBFE+0epyQ7}6|tmwGmA%T?t<&E`>iS? z&8Tuv!#2@yOgpu~{z}uh#2#=kh{^(8n8>P*D7#4}9!t+$E48>n(%<%MeHFX-g*YUl ztm94}k_PDHE~wAqZ)VFRL!p=bhjb`HEYR5YNl@fFE7ydZ-=Y>~>NeB+cc%Ti(TgS;*idpiP6o1IHc!AV66kC0@)7L3-$pP8f&ttZZ6J-EOxI+A*({x1t-@ zQ41=Z;(GCFF5todLQA?IA!4A*ot|V1>GhJ0$!4+RGV5r=B?#02TFO3kAzhv4P0vDa zHkn=@EGW%jGwtHnX`qk+Q$(X6o3BCNi*=*U>~HqEU?cyKD0M8zC0*EsU8}1MmtkuX=`bjM0>lsfl z2vj{F&Am>TgTpWgq*BhO070N9yF7tRf2d=dgF){DgJ8Pot0SA(_#`Emj_F$v;1rFO zGzRI~Pmbm=fKbOv;@J9Xb&G7Je)Y^37&j;KvLI_J~H3 zg00JkgAtjIw!SopOl`MFS7`&o?C*IelHQpVNU>2427uTjCD<19V`p5SQb~s_%z0Lj zz;AX0(x|_rOXYDZRDUSPcyJYNsr09KaQe23UqinKJ+qCHwfmR?{cz~3`cqvo@T<&( z_crqlRMy`L2)(TMmlgjj{*MIzZByX(NcRIASpx8ixBSi9cO1Vw1Zp5uXOL`QDhg4> znn}f=~gxH_J{u2NwvpX_trX`F>&jaMc)WDse&=mpmGEN zPqm*Gz#0a`c^1$~)|4v@@5y#=rDM*^YQB`E{iOhy>`Tc;Xsg6m(p^Tq_a(W$>66I= zw{qP0;i@a4><`r258ZLDxrt@HI!2*!yFR&X?AmUHvN*sy#l8C)q>{eDPtD*JCw9No z2Ary+Wa{)!MOW6n3tKTtlz77B(iQ(J{#X1zVfcUWu}2<#(HlPh@xLVKNLB#O(RJUo z6ZazN@?QeKkS9lwDTkp%XB^B@{5$1&)Q*d>D1%=6x6K`qNw(JF*U7y>fJO;{4G7jL z1TSkN439Y5k@B6e4aI{G1>MXad*5ttI0L3e0-dHXOy>AOfFlr~6StOP%b3}o>^ym}hAU!*!TPGt>C$#)QHJ(3wj1aAf{&q* z7{{Xax0M7=k{UxK1whafN04mqNH@O}v;GWz3R|Qgi@pu`Aq?Po`Pi0jQ8WzN)(5sV zeWY0t_8!h+1~4@d&i+^Y(~5s5u;Tv-#Q%l!*I)NtbOhybCjhUwYq#`I^it(8d|QD{ zDzs;4(z#BHC$NJ#z&{%|dC$=Rtl*4r!y(%Pr=O&Mdl0$oGlEqDTm(g5gwLS-OoJY!&D z(*;qAr=|l2+cD@&up%*~v4mR4Mw{7{IXJowp}*7@I35lt6v5CNNyumCVqlceN76&4 z-yAh`q`X-Sbct5{ulQf_|K#9*cW~R+-SzFSqQ_a79!Hs${?F01Z`?6-u@aSq&W7hX zFLk5ld4S+vhU~x$ z9Us(31d0H$EGQ%CQ9Jg4bU+`qUe$-tUOi@d6xj2@iuveC`NKX0BU5Xo>`?JgU^g=n?{D?*PjS!YOd<_iIOoi zWt+$#dNbb#IGcg422sg%5?zqrd1AFv(XMNn$>8aO# zBHg_EyZ+pD?fmZ8%EOl)o&SF0qaWgj9($DD`;q(S@9+J{11tW^xpscV{{a6NuDSl& z>8XG}LRVOruCPo?|2rpEHrDm2Fo=5f|+!Y}&i<1cdu-ec^mjF9(dyIq_&pd)=#Aha1d@KXJQO3sekJ;Tkwp8MKgj*O#he5NtIL}jy4 z5qu;lvIy;a@yJ1Z4*QkCNQ?7u9g&U4!|Imz*{Bq05ruhS#()Dt;&VDvb@sT**~9;H zp7N>m+)vp3ef%@&nICsE-Jk>hl@vEn} zEe<*7DH-vS?kAmXsH~ju!px@hPYdVL40YsF#Ebe|nw=b`U&7f!^1INy^nrEA3(i3N z9Q8by>qiPk}Z36*ShM>Bk-*Ot@v(bl?4fhPs8 zD)W*K1UA#`tCyPec3Pe#4tT3H4k^PvAnmh*M|;Ls%l2*ORTX@7>S4j4COIi_RMS&UR&ief&UxMUr%3h^NV(WFFw*i|FC6B27chz zesWF-rekGv#s7-`DcAazzyFfIcn4i(xlGO3#=q;{xYPW_DtI#ZKru_#6Y%GXhcphJ z(__uz37@TWhk^dnJ zrg%QM>41h_5ZO6hftNh~vTtx&yk2cnz9*fVzeu_Ne24%R-DMjNeQn^k&bunN?f9Xt z(&D<$p5U@**8}jAcv9vQR%)Be!1qDdk30US!Tw90{^F}P@Q=!m|HeD$U+t2C4_G3w zP*(iYS;7By8b}*wG>Ko}F9!8SH93oB(@tlOCYhwQpII5ntaK#!WdWWcFmiTS zY72nOLq{~(Eht(*WIsJ#ss)|Eg-eH!_JiBBswQc zK2JOT=YfBk@jv|~$7bNS^1FAp9;Uw^c;8RbzkC1B(nq$B`n47RXA=Jx&TqHV8v^g3 z%P4#~m8aSNMy~zE{76I1qM9*1km!*Oah`Po2i`8K@6E0-JJO&MfVW-Atuu>K$?3ZG z&Pp~#0+P{-i%!4OB3@I;H-jLF_p4H}A!RAFema4m&(-Q(5tUcJY7dqaXXU%XuvDvQ_}5*}p_4nV6!)6zhOyptoQ!P`oOvIqSl52vO=! z&*1EXInQRmnWOLdu@CVMZ5H8K9tH(>R-;?`$3fd<@W4yqZO~l;;AlCDDF-BXeyDE_ z99e7Ci}4`6jR^2-^+(A^r573pT!wzoF$5!~wq+k66et2ZOaa{5Q3P-I z6(ZuoXId2@=gs+$0f3Y)(-2h6g_2KLa2@G@WS|pPRy!Lq*f{EdeiJ_)K#N^Myc}fE zw#82>{iS=UIA9yrPBZ?enf}+@@(1Pw;G~qN?UIyN?0BA@MEC){EwJMMY~ugi_1C_3 zclb4Q$ij!MIN$r1Ykvu|su_S3*?kaYHL6kj5AU=8@Mjx2DuYOctKtdWR!ERgwYpa{=5pp?m*&e45|I+~aHMe}( ziJ0{-m1*$*+rRkz)1!nd{?91>w~v1GcN}&V;LxuE*4aP#Jve`%gl09CO|!Asir1gN zfN+@2L>A;i3pFK6qD5ukV{l$jAk;$#^g7;N4ap#f^@Dv2rNQ4NgSG?)Vrb>xT`$a3#R;DY|7q&v zY)3-h9e|&jxlre65H-Gu6CW(zrGAgMi&+3B%D4&LW^T;?qCF>{I?ee1lBd6j{^GO$ z+Y>$bPi5l&j?esRdf6xcS1bO{DE`k~JFfy9s_W}rTs&&38p%+l>VLuQ7w z?ONsmW+#+8(tuX6U8&Cj#(0 z%{`_141(VU1y0E2hMC90_*wgKf1uC@))57X&v=D8KQ}f4OS!-7Vv+}B)XP?iyhTh# znj_k$3;)xS|7jfjr}CA*?F;B@E`AxU_#eWYEX#t;AuSOV^}z6pL?qk7`UEi)Pd|JB;^yA#F&VCE&;DJ_LTQZ&+HyFSsA4nNS}06NqyHFitE^Y!@kv6#h1o36m^6%0x# zBf|g3IEJ4$PQq52gN+_Jp zR$N~P1wXtWgniCug%Y0@@Y_H8d8synFUxgD`r>e4J<$c75$%N#(+4ZrlO%aRc}d*t zyp#+I^)rk-d+Lv+@yoRhpO{-d8Wfd32UE?s Z(KT0CtNBFHad<<&pQdj*3LXET?_ZPq8I+ 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 z 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 literal 0 HcmV?d00001 diff --git a/desktop/buildResources/icon.png b/desktop/buildResources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..25f34eb3e92ab5f13741a9dc10deafc502ee79e3 GIT binary patch literal 121111 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 Z(KT0CtNBFHad<<&pQdj*3LXET?_ZPq8I+ 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 z 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 literal 0 HcmV?d00001 diff --git a/desktop/package.json b/desktop/package.json index 3f1e0ce0..bea233f6 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -3,7 +3,7 @@ "version": "1.1.0-SNAPSHOT", "main": "packages/main/dist/index.cjs", "name": "smartpointer", - "productName": "smartpointer", + "productName": "スマートポインター", "description": "手元のスマホをリモコン化する、共同プレゼンテーション支援ツール", "scripts": { "generate-electron-vendors": "cross-env ELECTRON_RUN_AS_NODE=1 electron --experimental-loader ts-node/esm scripts/generate-electron-vendors.mts", From d5541d186f5bb500def470e94f5136cdab54f767 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 6 Nov 2022 14:30:12 +0900 Subject: [PATCH 043/189] update tray icon when native theme changed --- desktop/packages/main/src/view/tray.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index 6797763a..ac44ef0c 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -103,3 +103,9 @@ export const updateTray = () => { trayInstance.setContextMenu(Menu.buildFromTemplate(menuTemplate(state))); }; + +nativeTheme.on("updated", () => { + if (trayInstance !== null) { + trayInstance.setImage(join(assetsPath, getIconFileName())); + } +}); From 64c41d0eae031ad8bfd639a6a2bc2632411a60b4 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 6 Nov 2022 14:32:17 +0900 Subject: [PATCH 044/189] use white icon when linux --- desktop/packages/main/src/view/tray.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index ac44ef0c..b74b863f 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -84,6 +84,11 @@ const getIconFileName = () => { if (process.platform === "darwin") { return "tray-iconTemplate.png"; } + + if (process.platform === "linux") { + return "tray-icon-white.png"; + } + if (nativeTheme.shouldUseDarkColors) { return "tray-icon-white.png"; } From 72c14fbb056080a8099f4fc01602e3873900d75c Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 6 Nov 2022 14:33:27 +0900 Subject: [PATCH 045/189] use .ico when win32 --- desktop/packages/main/src/view/tray.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index b74b863f..e4cf1aad 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -89,6 +89,13 @@ const getIconFileName = () => { return "tray-icon-white.png"; } + if (process.platform === "win32") { + if (nativeTheme.shouldUseDarkColors) { + return "tray-icon-white.ico"; + } + return "tray-icon.ico"; + } + if (nativeTheme.shouldUseDarkColors) { return "tray-icon-white.png"; } From c2bb5c0e9b124c002f17cd56cecd7ff64ac899d7 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 6 Nov 2022 18:44:03 +0900 Subject: [PATCH 046/189] fix toggleOverlayWindowDevToolsInOverlayWindow --- desktop/packages/main/src/controller/index.ts | 3 ++- desktop/packages/main/src/view/window/pointerOverlay.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index a385ecb7..ade58ef0 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -21,6 +21,7 @@ import { showOverlayWindow, updatePointerInOverlayWindow, updatePointerTypeInOverlayWindow, + toggleOverlayWindowDevToolsInOverlayWindow, } from "@/view/window/pointerOverlay"; export const initialize = () => { @@ -86,5 +87,5 @@ export const showInviteLink = async () => { }; export const toggleOverlayWindowDevTools = () => { - toggleOverlayWindowDevTools(); + toggleOverlayWindowDevToolsInOverlayWindow(); }; diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index a01b1bd9..86f0967d 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -53,7 +53,7 @@ export const showOverlayWindow = async () => { overlayWindow.show(); }; -export const toggleOverlayWindowDevTools = () => { +export const toggleOverlayWindowDevToolsInOverlayWindow = () => { if (overlayWindow === null || overlayWindow.isDestroyed()) { return; } From 8d02bd2bb1b90160404bb2030cad5d24a33e52c1 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 6 Nov 2022 18:44:31 +0900 Subject: [PATCH 047/189] not focusable in linux --- desktop/packages/main/src/view/window/pointerOverlay.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 86f0967d..3969e382 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -29,7 +29,7 @@ export const showOverlayWindow = async () => { show: false, frame: false, transparent: true, - focusable: process.platform === "linux", + focusable: false, hasShadow: false, webPreferences: { preload: join( From d23b4db9174e9e4c68999224a9b57f9c45909bfa Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 6 Nov 2022 18:45:00 +0900 Subject: [PATCH 048/189] fix linux build config --- desktop/.electron-builder.config.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/desktop/.electron-builder.config.js b/desktop/.electron-builder.config.js index 2512d0f8..c3a7b12b 100644 --- a/desktop/.electron-builder.config.js +++ b/desktop/.electron-builder.config.js @@ -9,6 +9,12 @@ const config = { }, files: ["packages/**/dist/**"], extraResources: ["assets"], + snap: { + environment: { + // for libappindicator support + TMPDIR: "$XDG_RUNTIME_DIR", + }, + }, }; module.exports = config; From b96cf605aeb689df04019a938346c1751aebf3bc Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 7 Nov 2022 00:00:38 +0900 Subject: [PATCH 049/189] =?UTF-8?q?PointerWrapper=20=E3=82=92=E5=85=B1?= =?UTF-8?q?=E9=80=9A=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../renderer/src/overlay/ArrowPointer.tsx | 109 +++++------------- .../renderer/src/overlay/FingerPointer.tsx | 103 ++++------------- .../renderer/src/overlay/PointerWrapper.tsx | 74 ++++++++++++ 3 files changed, 123 insertions(+), 163 deletions(-) create mode 100644 desktop/packages/renderer/src/overlay/PointerWrapper.tsx diff --git a/desktop/packages/renderer/src/overlay/ArrowPointer.tsx b/desktop/packages/renderer/src/overlay/ArrowPointer.tsx index bbf5ebd8..c4302eba 100644 --- a/desktop/packages/renderer/src/overlay/ArrowPointer.tsx +++ b/desktop/packages/renderer/src/overlay/ArrowPointer.tsx @@ -1,89 +1,32 @@ -import { Box, Text, useToken, VStack } from "@chakra-ui/react"; -import { useWindowSize } from "@react-hook/window-size"; import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import type { FC } from "react"; -/** - * - * @see https://gist.github.com/0x263b/2bdd90886c2036a1ad5bcf06d6e6fb37 - */ -function randomColorFromList(str: string, list: string[]): string { - let index = 0; - if (str.length === 0) return list[0]!; - for (let i = 0; i < str.length; i += 1) { - index = str.charCodeAt(i) + ((index << 5) - index); - index = index & index; - } - index = ((index % list.length) + list.length) % list.length; - return list[index]!; -} +import { PointerWrapper } from "./PointerWrapper"; export const ArrowPointer: FC<{ pointers: UpdatePointersMessage }> = ({ pointers, -}) => { - const [width, height] = useWindowSize(); - const colors = useToken("colors", [ - "gray.500", - "red.500", - "orange.500", - "yellow.500", - "green.500", - "teal.500", - "blue.500", - "cyan.500", - "purple.500", - "pink.500", - ]); - - return ( - - {pointers.map(({ user, coordinate }) => { - const color = randomColorFromList(user.id, colors); - - return ( - - - - - {pointers.length > 1 && ( - - - {user.name} - - - )} - - ); - })} - - ); -}; +}) => ( + ( + + + + )} + /> +); diff --git a/desktop/packages/renderer/src/overlay/FingerPointer.tsx b/desktop/packages/renderer/src/overlay/FingerPointer.tsx index befa1f94..e298db48 100644 --- a/desktop/packages/renderer/src/overlay/FingerPointer.tsx +++ b/desktop/packages/renderer/src/overlay/FingerPointer.tsx @@ -1,86 +1,29 @@ -import { Box, Flex, Text, useToken } from "@chakra-ui/react"; -import { useWindowSize } from "@react-hook/window-size"; import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import type { FC } from "react"; -/** - * - * @see https://gist.github.com/0x263b/2bdd90886c2036a1ad5bcf06d6e6fb37 - */ -function randomColorFromList(str: string, list: string[]): string { - let index = 0; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - if (str.length === 0) return list[0]!; - for (let i = 0; i < str.length; i += 1) { - index = str.charCodeAt(i) + ((index << 5) - index); - index = index & index; - } - index = ((index % list.length) + list.length) % list.length; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return list[index]!; -} +import { PointerWrapper } from "./PointerWrapper"; export const FingerPointer: FC<{ pointers: UpdatePointersMessage }> = ({ pointers, -}) => { - const [width, height] = useWindowSize(); - const colors = useToken("colors", [ - "gray.500", - "red.500", - "orange.500", - "yellow.500", - "green.500", - "teal.500", - "blue.500", - "cyan.500", - "purple.500", - "pink.500", - ]); - - return ( - - {pointers.map(({ user, coordinate }) => { - const color = randomColorFromList(user.id, colors); - - return ( - - - - - {pointers.length > 1 && ( - - {user.name} - - )} - - ); - })} - - ); -}; +}) => ( + ( + + + + )} + /> +); diff --git a/desktop/packages/renderer/src/overlay/PointerWrapper.tsx b/desktop/packages/renderer/src/overlay/PointerWrapper.tsx new file mode 100644 index 00000000..87f00337 --- /dev/null +++ b/desktop/packages/renderer/src/overlay/PointerWrapper.tsx @@ -0,0 +1,74 @@ +import { Box, Flex, Text, useToken } from "@chakra-ui/react"; +import { useWindowSize } from "@react-hook/window-size"; +import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; +import type { FC, ReactNode } from "react"; + +/** + * + * @see https://gist.github.com/0x263b/2bdd90886c2036a1ad5bcf06d6e6fb37 + */ +function randomColorFromList(str: string, list: string[]): string { + let index = 0; + if (str.length === 0) return list[0]!; + for (let i = 0; i < str.length; i += 1) { + index = str.charCodeAt(i) + ((index << 5) - index); + index = index & index; + } + index = ((index % list.length) + list.length) % list.length; + return list[index]!; +} + +type Props = { + pointers: UpdatePointersMessage; + renderPointer: (color: string) => ReactNode; +}; + +export const PointerWrapper: FC = ({ pointers, renderPointer }) => { + const [width, height] = useWindowSize(); + const colors = useToken("colors", [ + "gray.500", + "red.500", + "orange.500", + "yellow.500", + "green.500", + "teal.500", + "blue.500", + "cyan.500", + "purple.500", + "pink.500", + ]); + + return ( + + {pointers.map(({ user, coordinate }) => { + const color = randomColorFromList(user.id, colors); + + return ( + + {renderPointer(color)} + { + + + {user.name} + + + } + + ); + })} + + ); +}; From 643984ea4719acc0949ed4e4b9ccff367a24ee3b Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 7 Nov 2022 01:19:40 +0900 Subject: [PATCH 050/189] introduce electron-store and nanoid --- desktop/package-lock.json | 482 ++++++++++++++++++++++++++++++++++++-- desktop/package.json | 2 + 2 files changed, 460 insertions(+), 24 deletions(-) diff --git a/desktop/package-lock.json b/desktop/package-lock.json index cf454c2d..b3d753ca 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -15,6 +15,8 @@ "@nut-tree/nut-js": "2.3.0", "@stomp/stompjs": "6.1.2", "axios": "1.1.3", + "electron-store": "8.1.0", + "nanoid": "4.0.0", "ws": "8.10.0" }, "devDependencies": { @@ -3649,6 +3651,42 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -4074,6 +4112,14 @@ "node": ">= 4.0.0" } }, + "node_modules/atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -5113,6 +5159,63 @@ "node": ">=10" } }, + "node_modules/conf": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", + "dependencies": { + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conf/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/conf/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/conf/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -5302,6 +5405,28 @@ "url": "https://opencollective.com/date-fns" } }, + "node_modules/debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "dependencies": { + "mimic-fn": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/debounce-fn/node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -5589,6 +5714,20 @@ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/dotenv": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", @@ -5862,6 +6001,29 @@ "node": ">= 10.0.0" } }, + "node_modules/electron-store": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.1.0.tgz", + "integrity": "sha512-2clHg/juMjOH0GT9cQ6qtmIvK183B39ZXR0bUoPwKwYHJsEF3quqyDzMFUAu+0OP8ijmN2CbPRAelhNbWUbzwA==", + "dependencies": { + "conf": "^10.2.0", + "type-fest": "^2.17.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-store/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", @@ -5918,7 +6080,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, "engines": { "node": ">=6" } @@ -8236,6 +8397,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -8488,6 +8657,11 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "node_modules/json-schema-typed": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -8770,7 +8944,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -8882,7 +9055,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "engines": { "node": ">=6" } @@ -8983,15 +9155,14 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "devOptional": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", + "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==", "bin": { - "nanoid": "bin/nanoid.cjs" + "nanoid": "bin/nanoid.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^14 || ^16 || >=18" } }, "node_modules/natural-compare": { @@ -9439,7 +9610,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -9781,6 +9951,73 @@ "ufo": "^0.8.5" } }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, "node_modules/plist": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", @@ -9845,6 +10082,18 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "devOptional": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10406,6 +10655,14 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -11941,8 +12198,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { "version": "1.10.2", @@ -14841,6 +15097,32 @@ "uri-js": "^4.2.2" } }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -15158,6 +15440,11 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, + "atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==" + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -15961,6 +16248,49 @@ } } }, + "conf": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", + "requires": { + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -16110,6 +16440,21 @@ "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", "dev": true }, + "debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "requires": { + "mimic-fn": "^3.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" + } + } + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -16331,6 +16676,14 @@ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "requires": { + "is-obj": "^2.0.0" + } + }, "dotenv": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", @@ -16570,6 +16923,22 @@ } } }, + "electron-store": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.1.0.tgz", + "integrity": "sha512-2clHg/juMjOH0GT9cQ6qtmIvK183B39ZXR0bUoPwKwYHJsEF3quqyDzMFUAu+0OP8ijmN2CbPRAelhNbWUbzwA==", + "requires": { + "conf": "^10.2.0", + "type-fest": "^2.17.0" + }, + "dependencies": { + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + } + } + }, "electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", @@ -16613,8 +16982,7 @@ "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" }, "error-ex": { "version": "1.3.2", @@ -18270,6 +18638,11 @@ "has-tostringtag": "^1.0.0" } }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -18459,6 +18832,11 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "json-schema-typed": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -18691,7 +19069,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -18772,8 +19149,7 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "mimic-response": { "version": "1.0.1", @@ -18850,10 +19226,9 @@ "dev": true }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "devOptional": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", + "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==" }, "natural-compare": { "version": "1.4.0", @@ -19194,7 +19569,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -19453,6 +19827,54 @@ } } }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + } + } + }, "plist": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", @@ -19498,6 +19920,14 @@ "nanoid": "^3.3.4", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" + }, + "dependencies": { + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "devOptional": true + } } }, "prelude-ls": { @@ -19902,6 +20332,11 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -21024,8 +21459,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.2", diff --git a/desktop/package.json b/desktop/package.json index bea233f6..c36ecc68 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -23,6 +23,8 @@ "@nut-tree/nut-js": "2.3.0", "@stomp/stompjs": "6.1.2", "axios": "1.1.3", + "electron-store": "8.1.0", + "nanoid": "4.0.0", "ws": "8.10.0" }, "devDependencies": { From 9ff14f953fd1d81eaf2a26744625abbfa01930d3 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 7 Nov 2022 02:27:16 +0900 Subject: [PATCH 051/189] fix toggleOverlayWindowDevToolsInOverlayWindow --- desktop/packages/main/src/view/window/pointerOverlay.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 3969e382..2a28c15c 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -58,7 +58,7 @@ export const toggleOverlayWindowDevToolsInOverlayWindow = () => { return; } - if (overlayWindow.webContents.isDevToolsOpened()) { + if (!overlayWindow.webContents.isDevToolsOpened()) { overlayWindow.webContents.openDevTools({ mode: "detach", }); From d0dbac9fa32a36b783cdd036736470f94e925115 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 7 Nov 2022 02:31:16 +0900 Subject: [PATCH 052/189] show custom pointers --- desktop/packages/main/src/controller/index.ts | 3 ++- desktop/packages/main/src/model/index.ts | 11 +++++--- desktop/packages/main/src/store.ts | 14 ++++++++++ desktop/packages/main/src/types.ts | 2 ++ desktop/packages/main/src/view/tray.ts | 19 +++++++++----- .../main/src/view/window/pointerOverlay.ts | 2 ++ desktop/packages/renderer/src/overlay/App.tsx | 9 +++++++ .../renderer/src/overlay/CustomPointer.tsx | 26 +++++++++++++++++++ .../renderer/src/overlay/PointerWrapper.tsx | 4 +-- desktop/packages/shared/index.ts | 16 +++++++++--- 10 files changed, 89 insertions(+), 17 deletions(-) create mode 100644 desktop/packages/main/src/store.ts create mode 100644 desktop/packages/renderer/src/overlay/CustomPointer.tsx diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index ade58ef0..b1e2c786 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -11,6 +11,7 @@ import { listenRoomSubscription, unsubscribeRoomSubscription, } from "@/stomp"; +import { store } from "@/store"; import { updateTray } from "@/view/tray"; import { closeInviteLinkWindow, @@ -39,7 +40,7 @@ export const createRoom = async () => { await activate(); - model.createdRoom(data); + model.createdRoom(data, store.get("customPointerTypes")); listenRoomSubscription(data.roomId); diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 99022a9a..9a6ad272 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -1,8 +1,9 @@ import { PointerOrientation, - pointers, + builtInPointers, PointerType, User, + CustomPointerType, } from "@smartpointer-desktop/shared"; import { Room, State } from "@/types"; @@ -29,7 +30,10 @@ export const startCreatingRoom = () => { }; }; -export const createdRoom = (room: Room) => { +export const createdRoom = ( + room: Room, + customPointerTypes: CustomPointerType[] +) => { if (state.status !== "CREATING") { throw new Error("Cannot create room when not in CREATING state"); } @@ -39,7 +43,8 @@ export const createdRoom = (room: Room) => { room, joinedUsers: new Map(), activePointers: new Map(), - selectedPointerType: pointers[0]!, + selectedPointerType: builtInPointers[0]!, + customPointerTypes, }; }; diff --git a/desktop/packages/main/src/store.ts b/desktop/packages/main/src/store.ts new file mode 100644 index 00000000..33a1ebdb --- /dev/null +++ b/desktop/packages/main/src/store.ts @@ -0,0 +1,14 @@ +import { CustomPointerType } from "@smartpointer-desktop/shared"; +import Store from "electron-store"; + +type StoreType = { + customPointerTypes: CustomPointerType[]; +}; + +const initialState: StoreType = { + customPointerTypes: [], +}; + +export const store = new Store({ + defaults: initialState, +}); diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index 907ec0e9..dfec485c 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -1,4 +1,5 @@ import { + CustomPointerType, PointerOrientation, PointerType, User, @@ -27,5 +28,6 @@ export type State = Readonly< joinedUsers: Map; activePointers: Map; selectedPointerType: PointerType; + customPointerTypes: CustomPointerType[]; } >; diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index e4cf1aad..bc8ef98a 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -1,4 +1,4 @@ -import { pointers } from "@smartpointer-desktop/shared"; +import { builtInPointers } from "@smartpointer-desktop/shared"; import { Menu, MenuItemConstructorOptions, nativeTheme, Tray } from "electron"; import { join } from "path"; @@ -28,12 +28,17 @@ const createdRoomMenuTemplate: MenuTemplate = ( ) => [ { label: "ポインター", - submenu: pointers.map((pointer) => ({ - label: pointer.name, - type: "radio", - checked: state.selectedPointerType.id === pointer.id, - click: () => controller.selectedPointer(pointer), - })), + submenu: builtInPointers + .concat(state.customPointerTypes) + .map((pointer) => ({ + label: pointer.name, + type: "radio", + checked: state.selectedPointerType.id === pointer.id, + click: () => controller.selectedPointer(pointer), + })), + }, + { + label: "自作ポインターの設定", }, { label: "参加者一覧", diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 2a28c15c..fa14668c 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -32,6 +32,8 @@ export const showOverlayWindow = async () => { focusable: false, hasShadow: false, webPreferences: { + // load custom pointer image from local file + webSecurity: !import.meta.env.DEV, preload: join( app.getAppPath(), "packages", diff --git a/desktop/packages/renderer/src/overlay/App.tsx b/desktop/packages/renderer/src/overlay/App.tsx index fbffad9e..9475123d 100644 --- a/desktop/packages/renderer/src/overlay/App.tsx +++ b/desktop/packages/renderer/src/overlay/App.tsx @@ -1,10 +1,12 @@ import type { + CustomPointerType, PointerType, UpdatePointersMessage, } from "@smartpointer-desktop/shared"; import { useEffect, useState } from "react"; import { ArrowPointer } from "./ArrowPointer"; +import { CustomPointer } from "./CustomPointer"; import { FingerPointer } from "./FingerPointer"; import { SpotlightPointer } from "./SpotlightPointer"; @@ -40,5 +42,12 @@ export const App = () => { return ; case "FINGER": return ; + default: + return ( + + ); } }; diff --git a/desktop/packages/renderer/src/overlay/CustomPointer.tsx b/desktop/packages/renderer/src/overlay/CustomPointer.tsx new file mode 100644 index 00000000..32cb2c8f --- /dev/null +++ b/desktop/packages/renderer/src/overlay/CustomPointer.tsx @@ -0,0 +1,26 @@ +import { Box } from "@chakra-ui/react"; +import type { + CustomPointerType, + UpdatePointersMessage, +} from "@smartpointer-desktop/shared"; +import type { FC } from "react"; + +import { PointerWrapper } from "./PointerWrapper"; + +export const CustomPointer: FC<{ + pointers: UpdatePointersMessage; + pointerType: CustomPointerType; +}> = ({ pointers, pointerType }) => ( + ( + + )} + /> +); diff --git a/desktop/packages/renderer/src/overlay/PointerWrapper.tsx b/desktop/packages/renderer/src/overlay/PointerWrapper.tsx index 87f00337..827e0f8a 100644 --- a/desktop/packages/renderer/src/overlay/PointerWrapper.tsx +++ b/desktop/packages/renderer/src/overlay/PointerWrapper.tsx @@ -59,13 +59,13 @@ export const PointerWrapper: FC = ({ pointers, renderPointer }) => { )`} > {renderPointer(color)} - { + {pointers.length > 1 && ( {user.name} - } + )} ); })} diff --git a/desktop/packages/shared/index.ts b/desktop/packages/shared/index.ts index 109506cc..de49b388 100644 --- a/desktop/packages/shared/index.ts +++ b/desktop/packages/shared/index.ts @@ -24,14 +24,22 @@ export type GetPointerResult = { pointerType: PointerType; }; -export type PointerId = "SPOTLIGHT" | "ARROW" | "FINGER"; +export type BuiltInPointerId = "SPOTLIGHT" | "ARROW" | "FINGER"; -export type PointerType = { - id: PointerId; +export type BuiltInPointerType = { + id: BuiltInPointerId; name: string; }; -export const pointers: PointerType[] = [ +export type CustomPointerType = { + id: string; + name: string; + image: string; +}; + +export type PointerType = BuiltInPointerType | CustomPointerType; + +export const builtInPointers: PointerType[] = [ { id: "SPOTLIGHT", name: "スポットライト", From 5c9bbdab16b68aa5ddf90f8180f76cfcb94501c8 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Mon, 7 Nov 2022 19:09:08 +0900 Subject: [PATCH 053/189] add C/U/D on customPointer --- desktop/packages/main/src/controller/index.ts | 33 ++++++++++- desktop/packages/main/src/model/index.ts | 59 ++++++++++++++++--- desktop/packages/main/src/types.ts | 32 +++++----- 3 files changed, 98 insertions(+), 26 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index b1e2c786..d279007c 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -1,4 +1,5 @@ import { + CustomPointerType, PointerOrientation, PointerType, User, @@ -26,7 +27,7 @@ import { } from "@/view/window/pointerOverlay"; export const initialize = () => { - model.initialize(); + model.initialize(store.get("customPointerTypes")); updateTray(); }; @@ -40,7 +41,7 @@ export const createRoom = async () => { await activate(); - model.createdRoom(data, store.get("customPointerTypes")); + model.createdRoom(data); listenRoomSubscription(data.roomId); @@ -90,3 +91,31 @@ export const showInviteLink = async () => { export const toggleOverlayWindowDevTools = () => { toggleOverlayWindowDevToolsInOverlayWindow(); }; + +export const addCustomPointerType = (customPointerType: CustomPointerType) => { + model.addedCustomPointerType(customPointerType); + + updateTray(); + + store.set("customPointerTypes", model.getState().customPointerTypes); +}; + +export const removeCustomPointerType = ( + customPointerType: CustomPointerType +) => { + model.removedCustomPointerType(customPointerType); + + updateTray(); + + store.set("customPointerTypes", model.getState().customPointerTypes); +}; + +export const updateCustomPointerType = ( + customPointerType: CustomPointerType +) => { + model.updatedCustomPointerType(customPointerType); + + updateTray(); + + store.set("customPointerTypes", model.getState().customPointerTypes); +}; diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 9a6ad272..9f268774 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -8,15 +8,14 @@ import { import { Room, State } from "@/types"; -let state: State = { - status: "READY", -}; +let state: State; export const getState = (): State => state; -export const initialize = () => { +export const initialize = (customPointerTypes: CustomPointerType[]) => { state = { status: "READY", + customPointerTypes, }; }; @@ -26,25 +25,23 @@ export const startCreatingRoom = () => { } state = { + ...state, status: "CREATING", }; }; -export const createdRoom = ( - room: Room, - customPointerTypes: CustomPointerType[] -) => { +export const createdRoom = (room: Room) => { if (state.status !== "CREATING") { throw new Error("Cannot create room when not in CREATING state"); } state = { + ...state, status: "CREATED", room, joinedUsers: new Map(), activePointers: new Map(), selectedPointerType: builtInPointers[0]!, - customPointerTypes, }; }; @@ -54,7 +51,11 @@ export const closeRoom = () => { } state = { + ...state, status: "READY", + room: undefined, + joinedUsers: undefined, + activePointers: undefined, }; }; @@ -123,3 +124,43 @@ export const selectedPointer = (selectedPointerType: PointerType) => { selectedPointerType, }; }; + +export const updatedCustomPointerTypes = ( + customPointerTypes: CustomPointerType[] +) => { + state = { + ...state, + customPointerTypes, + }; +}; + +export const addedCustomPointerType = ( + customPointerType: CustomPointerType +) => { + state = { + ...state, + customPointerTypes: [...state.customPointerTypes, customPointerType], + }; +}; + +export const removedCustomPointerType = ( + customPointerType: CustomPointerType +) => { + state = { + ...state, + customPointerTypes: state.customPointerTypes.filter( + (type) => type.id !== customPointerType.id + ), + }; +}; + +export const updatedCustomPointerType = ( + customPointerType: CustomPointerType +) => { + state = { + ...state, + customPointerTypes: state.customPointerTypes.map((type) => + type.id === customPointerType.id ? customPointerType : type + ), + }; +}; diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index dfec485c..990b51b9 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -15,19 +15,21 @@ export type ActivePointer = { }; export type State = Readonly< - | { - status: "READY" | "CREATING"; - room?: undefined; - joinedUsers?: undefined; - activePointers?: undefined; - selectedPointerType?: undefined; - } - | { - status: "CREATED"; - room: Room; - joinedUsers: Map; - activePointers: Map; - selectedPointerType: PointerType; - customPointerTypes: CustomPointerType[]; - } + ( + | { + status: "READY" | "CREATING"; + room?: undefined; + joinedUsers?: undefined; + activePointers?: undefined; + } + | { + status: "CREATED"; + room: Room; + joinedUsers: Map; + activePointers: Map; + selectedPointerType: PointerType; + } + ) & { + customPointerTypes: CustomPointerType[]; + } >; From 08515ae986d44df97d4c7e6885eec269ad75658f Mon Sep 17 00:00:00 2001 From: averak Date: Sun, 6 Nov 2022 16:31:07 +0900 Subject: [PATCH 054/189] =?UTF-8?q?[feat]=20GraphQL=E3=82=92=E3=82=BB?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=82=A2=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 16 ++-- .../smartpointer/config/SwaggerConfig.java | 37 -------- .../config/WebSecurityConfig.java | 5 +- .../exception/BadRequestException.java | 4 +- .../smartpointer/exception/BaseException.java | 16 +++- .../exception/ConflictException.java | 4 +- .../exception/ForbiddenException.java | 4 +- .../InternalServerErrorException.java | 4 +- .../exception/NotFoundException.java | 4 +- .../exception/UnauthorizedException.java | 4 +- .../api/GlobalRestControllerAdvice.java | 2 - .../api/GraphQLExceptionResolver.java | 65 ++++++++++++++ .../api/controller/HealthCheckController.java | 25 ++++++ .../controller/HealthCheckRestController.java | 28 ------- .../api/controller/RoomController.java | 64 ++++++++++++++ .../api/controller/RoomRestController.java | 2 - .../api/request/PointerControlRequest.java | 4 - .../api/request/RoomJoinRequest.java | 3 - .../api/request/TimerResumeRequest.java | 2 - .../api/request/TimerStartRequest.java | 2 - .../api/response/AccessTokenResponse.java | 4 - .../api/response/ErrorResponse.java | 3 - .../api/response/PointerControlResponse.java | 3 - .../api/response/PointerRotationResponse.java | 4 - .../api/response/RoomResponse.java | 3 - .../api/response/SlideControlResponse.java | 2 - .../api/response/TimerResponse.java | 4 - app/src/main/resources/application.yml | 12 +-- .../main/resources/graphql/schema.graphqls | 36 ++++++++ .../helper/graphql/GraphQLOperation.groovy | 35 ++++++++ .../helper/graphql/GraphQLQuery.groovy | 46 ++++++++++ .../controller/AbstractController_IT.groovy | 49 ++++++----- .../HealthCheckController_IT.groovy | 21 +++++ .../HealthCheckRestController_IT.groovy | 20 ----- .../api/controller/RoomController_IT.groovy | 84 +++++++++++++++++++ 35 files changed, 451 insertions(+), 170 deletions(-) delete mode 100644 app/src/main/java/dev/abelab/smartpointer/config/SwaggerConfig.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GraphQLExceptionResolver.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckRestController.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java create mode 100644 app/src/main/resources/graphql/schema.graphqls create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLOperation.groovy create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLQuery.groovy create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy delete mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckRestController_IT.groovy create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy diff --git a/app/build.gradle b/app/build.gradle index 7cc3e7bc..8877c7f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ import org.yaml.snakeyaml.Yaml buildscript { ext { - SPRING_BOOT_VERSION = "2.7.1" + SPRING_BOOT_VERSION = "2.7.5" } repositories { mavenCentral() @@ -74,17 +74,21 @@ ext { dependencies { // spring boot implementation "org.springframework.boot:spring-boot-starter-web:${SPRING_BOOT_VERSION}" + implementation "org.springframework.boot:spring-boot-starter-webflux:${SPRING_BOOT_VERSION}" implementation "org.springframework.boot:spring-boot-starter-websocket:${SPRING_BOOT_VERSION}" implementation "org.springframework.boot:spring-boot-starter-validation:${SPRING_BOOT_VERSION}" implementation "org.springframework.boot:spring-boot-starter-security:${SPRING_BOOT_VERSION}" + implementation "org.springframework.boot:spring-boot-starter-graphql:${SPRING_BOOT_VERSION}" + implementation "org.springframework.boot:spring-boot-starter-actuator:${SPRING_BOOT_VERSION}" + implementation "org.springframework.boot:spring-boot-devtools:${SPRING_BOOT_VERSION}" testImplementation "org.springframework.boot:spring-boot-starter-test:${SPRING_BOOT_VERSION}" + testImplementation "org.springframework.graphql:spring-graphql-test:1.0.2" annotationProcessor "org.springframework.boot:spring-boot-configuration-processor:${SPRING_BOOT_VERSION}" // spring security implementation "org.springframework.security:spring-security-core:5.7.2" implementation "org.springframework.security:spring-security-web:5.7.2" implementation "org.springframework.security:spring-security-config:5.7.2" - // implementation "org.springframework.security:spring-security-messaging:5.7.2" testImplementation "org.springframework.security:spring-security-test:5.7.2" // spring session @@ -110,14 +114,6 @@ dependencies { // mysql implementation "mysql:mysql-connector-java:8.0.29" - // swagger - implementation "io.springfox:springfox-boot-starter:3.0.0" - implementation "org.springdoc:springdoc-openapi-ui:1.6.9" - implementation "org.springdoc:springdoc-openapi-javadoc:1.6.9" - implementation "org.springdoc:springdoc-openapi-security:1.6.9" - implementation "com.github.therapi:therapi-runtime-javadoc:0.13.0" - annotationProcessor "com.github.therapi:therapi-runtime-javadoc-scribe:0.13.0" - // test testImplementation "org.spockframework:spock-core:2.2-M1-groovy-4.0" testImplementation "org.spockframework:spock-spring:2.2-M1-groovy-4.0" diff --git a/app/src/main/java/dev/abelab/smartpointer/config/SwaggerConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/SwaggerConfig.java deleted file mode 100644 index 5f423f6b..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/config/SwaggerConfig.java +++ /dev/null @@ -1,37 +0,0 @@ -package dev.abelab.smartpointer.config; - -import org.springdoc.core.GroupedOpenApi; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import dev.abelab.smartpointer.property.ProjectProperty; -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.info.Info; -import lombok.RequiredArgsConstructor; - -/** - * Swaggerの設定 - */ -@Configuration -@RequiredArgsConstructor -public class SwaggerConfig { - - private final ProjectProperty projectProperty;; - - @Bean - public GroupedOpenApi groupedOpenApi() { - return GroupedOpenApi.builder() // - .group("Public API") // - .packagesToScan("dev.abelab.smartpointer.infrastructure.api") // - .build(); - } - - @Bean - public OpenAPI openAPI() { - final var info = new Info() // - .title("Smart Pointer Internal API") // - .version(this.projectProperty.getVersion()); - return new OpenAPI().info(info); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/config/WebSecurityConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/WebSecurityConfig.java index 1452c489..0a32fc7a 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/WebSecurityConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/WebSecurityConfig.java @@ -19,7 +19,8 @@ public class WebSecurityConfig { @Bean public WebSecurityCustomizer webSecurityCustomizer() { - return (web) -> web.ignoring().antMatchers("**.**", "/v3/api-docs/**", "/swagger-resources/**", "/swagger-ui/**", "/webjars/**"); + return (web) -> web.ignoring().antMatchers("**.**", "/v3/api-docs/**", "/swagger-resources/**", "/swagger-ui/**", "/webjars/**", + "/graphiql/**", "/graphql/**"); } @Bean @@ -29,7 +30,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { // アクセス許可 http.authorizeRequests() // - .antMatchers("/", "/api/health", "/ws/**").permitAll() // + .antMatchers("/", "/api/health", "/ws/**", "/graphql/**").permitAll() // .antMatchers("/api/batch/**").hasIpAddress("::1") // .antMatchers("/**").permitAll() // .anyRequest().authenticated(); diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/BadRequestException.java b/app/src/main/java/dev/abelab/smartpointer/exception/BadRequestException.java index 82efe9c0..4a9807ae 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/BadRequestException.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/BadRequestException.java @@ -2,6 +2,8 @@ import static org.springframework.http.HttpStatus.BAD_REQUEST; +import org.springframework.graphql.execution.ErrorType; + /** * 400 Bad Request */ @@ -13,7 +15,7 @@ public class BadRequestException extends BaseException { * @param errorCode error code */ public BadRequestException(final ErrorCode errorCode) { - super(BAD_REQUEST, errorCode); + super(BAD_REQUEST, ErrorType.BAD_REQUEST, errorCode); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/BaseException.java b/app/src/main/java/dev/abelab/smartpointer/exception/BaseException.java index 597ba56a..5301a292 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/BaseException.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/BaseException.java @@ -1,5 +1,6 @@ package dev.abelab.smartpointer.exception; +import org.springframework.graphql.execution.ErrorType; import org.springframework.http.HttpStatus; /** @@ -12,6 +13,11 @@ public class BaseException extends RuntimeException { */ private final HttpStatus httpStatus; + /** + * GraphQL error type + */ + private final ErrorType errorType; + /** * error code */ @@ -28,8 +34,9 @@ public class BaseException extends RuntimeException { * @param httpStatus http status * @param errorCode error code */ - public BaseException(final HttpStatus httpStatus, final ErrorCode errorCode, final String... args) { + public BaseException(final HttpStatus httpStatus, final ErrorType errorType, final ErrorCode errorCode, final String... args) { this.httpStatus = httpStatus; + this.errorType = errorType; this.errorCode = errorCode; this.args = args; } @@ -41,6 +48,13 @@ public HttpStatus getHttpStatus() { return this.httpStatus; } + /** + * getter of http status + */ + public ErrorType getErrorType() { + return this.errorType; + } + /** * getter of error code */ diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/ConflictException.java b/app/src/main/java/dev/abelab/smartpointer/exception/ConflictException.java index 4b4bdd83..6dbc8c83 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/ConflictException.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/ConflictException.java @@ -2,6 +2,8 @@ import static org.springframework.http.HttpStatus.CONFLICT; +import org.springframework.graphql.execution.ErrorType; + /** * 409 Conflict */ @@ -12,7 +14,7 @@ public class ConflictException extends BaseException { * @param errorCode error code */ public ConflictException(final ErrorCode errorCode) { - super(CONFLICT, errorCode); + super(CONFLICT, ErrorType.BAD_REQUEST, errorCode); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/ForbiddenException.java b/app/src/main/java/dev/abelab/smartpointer/exception/ForbiddenException.java index 49737dda..48ff899e 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/ForbiddenException.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/ForbiddenException.java @@ -2,6 +2,8 @@ import static org.springframework.http.HttpStatus.FORBIDDEN; +import org.springframework.graphql.execution.ErrorType; + /** * 403 Forbidden */ @@ -13,7 +15,7 @@ public class ForbiddenException extends BaseException { * @param errorCode error code */ public ForbiddenException(final ErrorCode errorCode) { - super(FORBIDDEN, errorCode); + super(FORBIDDEN, ErrorType.FORBIDDEN, errorCode); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/InternalServerErrorException.java b/app/src/main/java/dev/abelab/smartpointer/exception/InternalServerErrorException.java index 0d78d4da..84ae8cb8 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/InternalServerErrorException.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/InternalServerErrorException.java @@ -2,6 +2,8 @@ import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; +import org.springframework.graphql.execution.ErrorType; + /** * 500 Internal Server Error */ @@ -13,7 +15,7 @@ public class InternalServerErrorException extends BaseException { * @param errorCode error code */ public InternalServerErrorException(final ErrorCode errorCode) { - super(INTERNAL_SERVER_ERROR, errorCode); + super(INTERNAL_SERVER_ERROR, ErrorType.INTERNAL_ERROR, errorCode); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/NotFoundException.java b/app/src/main/java/dev/abelab/smartpointer/exception/NotFoundException.java index 850ef72a..beeb5dc7 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/NotFoundException.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/NotFoundException.java @@ -2,6 +2,8 @@ import static org.springframework.http.HttpStatus.NOT_FOUND; +import org.springframework.graphql.execution.ErrorType; + /** * 404 Not Found */ @@ -13,7 +15,7 @@ public class NotFoundException extends BaseException { * @param errorCode error code */ public NotFoundException(final ErrorCode errorCode) { - super(NOT_FOUND, errorCode); + super(NOT_FOUND, ErrorType.NOT_FOUND, errorCode); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/UnauthorizedException.java b/app/src/main/java/dev/abelab/smartpointer/exception/UnauthorizedException.java index 4d12fb0c..8ddb6f39 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/UnauthorizedException.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/UnauthorizedException.java @@ -2,6 +2,8 @@ import static org.springframework.http.HttpStatus.UNAUTHORIZED; +import org.springframework.graphql.execution.ErrorType; + /** * 500 Unauthorized */ @@ -13,7 +15,7 @@ public class UnauthorizedException extends BaseException { * @param errorCode error code */ public UnauthorizedException(final ErrorCode errorCode) { - super(UNAUTHORIZED, errorCode); + super(UNAUTHORIZED, ErrorType.UNAUTHORIZED, errorCode); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalRestControllerAdvice.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalRestControllerAdvice.java index b035cfe5..a516881e 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalRestControllerAdvice.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalRestControllerAdvice.java @@ -23,7 +23,6 @@ import dev.abelab.smartpointer.exception.*; import dev.abelab.smartpointer.infrastructure.api.response.ErrorResponse; -import io.swagger.v3.oas.annotations.Hidden; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -31,7 +30,6 @@ * Global rest controller advice */ @Slf4j -@Hidden @Controller @RestControllerAdvice @RequiredArgsConstructor diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GraphQLExceptionResolver.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GraphQLExceptionResolver.java new file mode 100644 index 00000000..bb61e618 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GraphQLExceptionResolver.java @@ -0,0 +1,65 @@ +package dev.abelab.smartpointer.infrastructure.api; + +import java.util.Locale; + +import org.springframework.context.MessageSource; +import org.springframework.graphql.execution.DataFetcherExceptionResolverAdapter; +import org.springframework.stereotype.Component; + +import dev.abelab.smartpointer.exception.BaseException; +import dev.abelab.smartpointer.infrastructure.api.response.ErrorResponse; +import graphql.GraphQLError; +import graphql.GraphqlErrorBuilder; +import graphql.schema.DataFetchingEnvironment; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * GraphQL Exception Resolver + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class GraphQLExceptionResolver extends DataFetcherExceptionResolverAdapter { + + private final MessageSource messageSource; + + @Override + protected GraphQLError resolveToSingleError(final Throwable ex, final DataFetchingEnvironment env) { + if (ex instanceof BaseException) { + final var exception = (BaseException) ex; + final var errorResponse = this.buildResponseEntity(exception); + return GraphqlErrorBuilder.newError() // + .errorType(exception.getErrorType()) // + .message(errorResponse.getMessage()) // + .path(env.getExecutionStepInfo().getPath()) // + .location(env.getField().getSourceLocation()) // + .build(); + } else { + return null; + } + } + + /** + * 例外からエラーレスポンスを作成 + * + * @param exception 例外 + * @return エラーレスポンス + */ + private ErrorResponse buildResponseEntity(final BaseException exception) { + final var message = this.messageSource.getMessage(exception.getErrorCode().getMessageKey(), null, Locale.ENGLISH); + final var response = ErrorResponse.builder() // + .code(exception.getErrorCode().getCode()) // + .message(message) // + .build(); + + if (exception.getHttpStatus().is4xxClientError()) { + log.warn(String.format("%d: %s", exception.getErrorCode().getCode(), message)); + } else if (exception.getHttpStatus().is5xxServerError()) { + log.error(String.format("%d: %s", exception.getErrorCode().getCode(), message)); + } + + return response; + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController.java new file mode 100644 index 00000000..ff275f69 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController.java @@ -0,0 +1,25 @@ +package dev.abelab.smartpointer.infrastructure.api.controller; + +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.stereotype.Controller; + +import lombok.RequiredArgsConstructor; + +/** + * ルームコントローラ + */ +@Controller +@RequiredArgsConstructor +public class HealthCheckController { + + /** + * ヘルスチェックAPI + * + * @return チェック結果 + */ + @QueryMapping + public Boolean health() { + return true; + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckRestController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckRestController.java deleted file mode 100644 index 754e6001..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckRestController.java +++ /dev/null @@ -1,28 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.controller; - -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestController; - -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; - -/** - * ヘルスチェックコントローラ - */ -@Tag(name = "Health Check", description = "ヘルスチェック") -@RestController -@RequestMapping(path = "/api/health", produces = MediaType.APPLICATION_JSON_VALUE) -@Validated -@RequiredArgsConstructor -public class HealthCheckRestController { - - @GetMapping - @ResponseStatus(HttpStatus.OK) - public void health() {} - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java new file mode 100644 index 00000000..73984538 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java @@ -0,0 +1,64 @@ +package dev.abelab.smartpointer.infrastructure.api.controller; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.stereotype.Controller; + +import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse; +import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse; +import dev.abelab.smartpointer.usecase.CreateRoomUseCase; +import dev.abelab.smartpointer.usecase.DeleteRoomUseCase; +import lombok.RequiredArgsConstructor; + +/** + * ルームコントローラ + */ +@Controller +@RequiredArgsConstructor +public class RoomController { + + private final CreateRoomUseCase createRoomUseCase; + + private final DeleteRoomUseCase deleteRoomUseCase; + + /** + * ルーム作成API + * + * @return ルーム + */ + @MutationMapping + public RoomResponse createRoom() { + return new RoomResponse(this.createRoomUseCase.handle()); + } + + /** + * ルーム削除API + * + * @param roomId ルームID + * @return ルームID + */ + @MutationMapping + public String deleteRoom( // + @Argument final String roomId // + ) { + this.deleteRoomUseCase.handle(roomId); + return roomId; + } + + /** + * ルーム入室API + * + * @param roomId ルームID + * @return ルームID + */ + @MutationMapping + public AccessTokenResponse joinRoom( // + @Argument final String roomId, // + @Argument final String passcode, // + @Argument final String userName // + ) { + // TODO: ルーム入室APIを実装 + return null; + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java index 8830f1cf..fa5ee2ac 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java @@ -12,13 +12,11 @@ import dev.abelab.smartpointer.usecase.CreateRoomUseCase; import dev.abelab.smartpointer.usecase.DeleteRoomUseCase; import dev.abelab.smartpointer.usecase.JoinRoomUseCase; -import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; /** * ルームコントローラ */ -@Tag(name = "Room", description = "ルーム") @RestController @RequestMapping(path = "/api/rooms", produces = MediaType.APPLICATION_JSON_VALUE) @Validated diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/PointerControlRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/PointerControlRequest.java index 07d8fe33..39ac17eb 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/PointerControlRequest.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/PointerControlRequest.java @@ -1,6 +1,5 @@ package dev.abelab.smartpointer.infrastructure.api.request; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -18,19 +17,16 @@ public class PointerControlRequest implements BaseRequest { /** * α値 */ - @Schema(required = true) Double alpha; /** * β値 */ - @Schema(required = true) Double beta; /** * γ値 */ - @Schema(required = true) Double gamma; /** diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java index 2deda376..247595d4 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java @@ -3,7 +3,6 @@ import dev.abelab.smartpointer.exception.BadRequestException; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.util.ValidationUtil; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,13 +20,11 @@ public class RoomJoinRequest implements BaseRequest { /** * パスコード */ - @Schema(required = true) String passcode; /** * ユーザ名 */ - @Schema(required = true) String name; /** diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java index 45418502..85c3d2a0 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java @@ -3,7 +3,6 @@ import dev.abelab.smartpointer.exception.BadRequestException; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.util.JsonMessageUtil; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,7 +20,6 @@ public class TimerResumeRequest implements BaseRequest { /** * 残り時間[s] */ - @Schema(required = true) Integer value; public TimerResumeRequest(final String payload) { diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java index 291e661d..ed9d98b2 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java @@ -3,7 +3,6 @@ import dev.abelab.smartpointer.exception.BadRequestException; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.util.JsonMessageUtil; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,7 +20,6 @@ public class TimerStartRequest implements BaseRequest { /** * 設定時間[s] */ - @Schema(required = true) Integer value; public TimerStartRequest(final String payload) { diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/AccessTokenResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/AccessTokenResponse.java index d816e6c2..3d5372f9 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/AccessTokenResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/AccessTokenResponse.java @@ -1,6 +1,5 @@ package dev.abelab.smartpointer.infrastructure.api.response; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -18,19 +17,16 @@ public class AccessTokenResponse { /** * トークンタイプ */ - @Schema(required = true) String tokenType; /** * アクセストークン */ - @Schema(required = true) String accessToken; /** * TTL */ - @Schema(required = true) Integer ttl; } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/ErrorResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/ErrorResponse.java index f786f396..36611e8d 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/ErrorResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/ErrorResponse.java @@ -1,6 +1,5 @@ package dev.abelab.smartpointer.infrastructure.api.response; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -18,13 +17,11 @@ public class ErrorResponse { /** * エラーメッセージ */ - @Schema(required = true) String message; /** * エラーコード */ - @Schema(required = true) Integer code; } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java index a7e4eb65..eea15620 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java @@ -1,7 +1,6 @@ package dev.abelab.smartpointer.infrastructure.api.response; import dev.abelab.smartpointer.infrastructure.api.request.PointerControlRequest; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -19,13 +18,11 @@ public class PointerControlResponse { /** * 回転数 */ - @Schema(required = true, nullable = true) PointerRotationResponse rotation; /** * ポインターがアクティブかどうか */ - @Schema(required = true) Boolean isActive; // TODO: ポインター操作者を入れる diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerRotationResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerRotationResponse.java index 1da76742..29f36731 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerRotationResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerRotationResponse.java @@ -1,7 +1,6 @@ package dev.abelab.smartpointer.infrastructure.api.response; import dev.abelab.smartpointer.infrastructure.api.request.PointerControlRequest; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -19,19 +18,16 @@ public class PointerRotationResponse { /** * α値 */ - @Schema(required = true) Double alpha; /** * β値 */ - @Schema(required = true) Double beta; /** * γ値 */ - @Schema(required = true) Double gamma; public PointerRotationResponse(final PointerControlRequest requestBody) { diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java index 3c02a209..40e392bf 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java @@ -1,7 +1,6 @@ package dev.abelab.smartpointer.infrastructure.api.response; import dev.abelab.smartpointer.domain.model.RoomModel; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -19,13 +18,11 @@ public class RoomResponse { /** * ルームID */ - @Schema(required = true) String roomId; /** * パスコード */ - @Schema(required = true) String passcode; public RoomResponse(final RoomModel roomModel) { diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/SlideControlResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/SlideControlResponse.java index 7e218a71..17290bc4 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/SlideControlResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/SlideControlResponse.java @@ -1,7 +1,6 @@ package dev.abelab.smartpointer.infrastructure.api.response; import dev.abelab.smartpointer.enums.SlideControl; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -19,7 +18,6 @@ public class SlideControlResponse { /** * スライド操作ID */ - @Schema(required = true) Integer control; public SlideControlResponse(final SlideControl slideControl) { diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java index e3578eb5..19d6c8ad 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java @@ -3,7 +3,6 @@ import java.time.LocalDateTime; import dev.abelab.smartpointer.domain.model.TimerModel; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,19 +20,16 @@ public class TimerResponse { /** * ステータス */ - @Schema(required = true) Integer status; /** * 初期値[s] */ - @Schema(required = true, nullable = true) Integer value; /** * 終了日時 */ - @Schema(required = true, nullable = true) LocalDateTime finishAt; public TimerResponse(final TimerModel timerModel) { diff --git a/app/src/main/resources/application.yml b/app/src/main/resources/application.yml index c0a21fbf..78b84e7c 100644 --- a/app/src/main/resources/application.yml +++ b/app/src/main/resources/application.yml @@ -8,7 +8,7 @@ spring: store-type: jdbc mvc: pathmatch: - matching-strategy: ant_path_matcher + matching-strategy: ANT_PATH_MATCHER messages: basename: i18n/messages encoding: UTF-8 @@ -24,10 +24,12 @@ spring: password: ${spring.datasource.password} locations: classpath:db/migration enabled: true - -springdoc: - swagger-ui: - doc-expansion: none + graphql: + graphiql: + enabled: true + schema: + printer: + enabled: true server: port: 8080 diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls new file mode 100644 index 00000000..67ee7324 --- /dev/null +++ b/app/src/main/resources/graphql/schema.graphqls @@ -0,0 +1,36 @@ +schema { + query: Query + mutation: Mutation + subscription: Subscription +} + +type Query { + health: Boolean +} + +type Mutation { + createRoom: RoomResponse + deleteRoom(roomId: ID!): ID! + joinRoom(roomId: ID!, passcode: String, userName: String): AccessTokenResponse +} + +type Subscription { + getUsers(roomId: ID!): [UserResponse] +} + +type RoomResponse { + roomId: ID! + passcode: String +} + +type AccessTokenResponse { + tokenType: String + accessToken: String + ttl: Int +} + +type UserResponse { + id: ID! + roomId: String + name: String +} \ No newline at end of file diff --git a/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLOperation.groovy b/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLOperation.groovy new file mode 100644 index 00000000..25822951 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLOperation.groovy @@ -0,0 +1,35 @@ +package dev.abelab.smartpointer.helper.graphql + +import groovy.transform.TupleConstructor + +/** + * GraphQL Operation + */ +@TupleConstructor +enum GraphQLOperation { + + HEALTH_CHECK("health", GraphQLOperationType.QUERY), + + CREATE_ROOM("createRoom", GraphQLOperationType.MUTATION), + + DELETE_ROOM("deleteRoom", GraphQLOperationType.MUTATION), + + JOIN_ROOM("joinRoom", GraphQLOperationType.MUTATION), + + final String name + + final GraphQLOperationType type + + @TupleConstructor + private static enum GraphQLOperationType { + + QUERY("query"), + + MUTATION("mutation"), + + SUBSCRIPTION("subscription"), + + final String name + } + +} \ No newline at end of file diff --git a/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLQuery.groovy b/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLQuery.groovy new file mode 100644 index 00000000..e1bc4c99 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLQuery.groovy @@ -0,0 +1,46 @@ +package dev.abelab.smartpointer.helper.graphql + +import groovy.transform.TupleConstructor +import lombok.Value + +/** + * GraphQL Query + * + * Spockと相性の良いクエリビルダーが無かったため、これで済ませる + */ +@Value +@TupleConstructor +class GraphQLQuery { + + /** + * オペレーション + */ + GraphQLOperation operation + + /** + * 引数 + */ + Map variables + + /** + * レスポンスタイプ + * + * FIXME: responseTypeを指定せず、document()でTを取得したい + */ + Class responseType + + String document() { + final variableBlock = this.variables.isEmpty() + ? "" + : "(" + this.variables.collect { "${it.key}: ${it.value instanceof String ? "\"" : ""}${it.value}${it.value instanceof String ? "\"" : ""}" }.join(", ") + ")" + final responseBlock = [String, Number, Boolean].any { this.responseType.isInstance(it) || this.responseType == it } + ? "" + : " { ${this.responseType.declaredFields*.name.join(" ")} }" + return """ + ${this.operation.type.name} { + ${this.operation.name}${variableBlock}${responseBlock} + } + """ + } + +} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy index 9d62ebe6..529373e2 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy @@ -3,15 +3,15 @@ package dev.abelab.smartpointer.infrastructure.api.controller import dev.abelab.smartpointer.AbstractDatabaseSpecification import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.helper.JsonConvertHelper +import dev.abelab.smartpointer.helper.graphql.GraphQLQuery import dev.abelab.smartpointer.infrastructure.api.response.ErrorResponse import dev.abelab.smartpointer.property.AuthProperty import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.autoconfigure.graphql.tester.AutoConfigureHttpGraphQlTester import org.springframework.context.MessageSource +import org.springframework.graphql.test.tester.WebGraphQlTester import org.springframework.http.HttpStatus import org.springframework.http.MediaType -import org.springframework.messaging.converter.MappingJackson2MessageConverter -import org.springframework.messaging.simp.stomp.StompSession -import org.springframework.messaging.simp.stomp.StompSessionHandlerAdapter import org.springframework.mock.web.MockHttpSession import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.MvcResult @@ -21,20 +21,18 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders import org.springframework.transaction.PlatformTransactionManager import org.springframework.util.MultiValueMap import org.springframework.web.context.WebApplicationContext -import org.springframework.web.socket.client.standard.StandardWebSocketClient -import org.springframework.web.socket.messaging.WebSocketStompClient import spock.lang.Shared -import java.util.concurrent.TimeUnit - /** * Controller統合テストの基底クラス */ +@AutoConfigureHttpGraphQlTester abstract class AbstractController_IT extends AbstractDatabaseSpecification { private MockMvc mockMvc - private WebSocketStompClient stompClient + @Autowired + private WebGraphQlTester graphQlTester @Autowired private WebApplicationContext webApplicationContext @@ -196,25 +194,33 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { } /** - * STOMPのコネクションを開始 + * Execute query / return response * - * @return session + * @param query query + * @return response */ - protected StompSession connect() { - final stompSessionHandler = new StompSessionHandlerAdapter() {} - return this.stompClient.connect(String.format("ws://localhost:%d/ws", PORT), stompSessionHandler) - .get(1, TimeUnit.SECONDS) + def T execute(final GraphQLQuery query) { + final response = this.graphQlTester.document(query.document()).execute() + .path(query.operation.name) + .entity(query.responseType) + + return response.get() } /** - * publish + * Execute query / verify exception * - * @param destination destination - * @param session stomp session - * @param payload payload + * @param query query + * @param exception expected exception */ - protected void publish(final String destination, final StompSession session, final Object payload) { - session.send(destination, JsonConvertHelper.convertObjectToJson(payload)) + def execute(final GraphQLQuery query, final BaseException exception) { + final expectedErrorMessage = this.getErrorMessage(exception) + this.graphQlTester.document(query.document()).execute() + .errors() + .satisfy({ + assert it[0].errorType == exception.errorType + assert it[0].message == expectedErrorMessage + }) } /** @@ -228,9 +234,6 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { chain.doFilter(request, response) })) .build() - - this.stompClient = new WebSocketStompClient(new StandardWebSocketClient()) - this.stompClient.setMessageConverter(new MappingJackson2MessageConverter()) } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy new file mode 100644 index 00000000..2c3fcb3f --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy @@ -0,0 +1,21 @@ +package dev.abelab.smartpointer.infrastructure.api.controller + + +import dev.abelab.smartpointer.helper.graphql.GraphQLOperation +import dev.abelab.smartpointer.helper.graphql.GraphQLQuery + +/** + * HealthCheckControllerの統合テスト + */ +class HealthCheckController_IT extends AbstractController_IT { + + def "ヘルスチェックAPI: 正常系 trueを返す"() { + when: + final query = new GraphQLQuery(GraphQLOperation.HEALTH_CHECK, [:], Boolean) + final response = this.execute(query) + + then: + response + } + +} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckRestController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckRestController_IT.groovy deleted file mode 100644 index cdb5b2b2..00000000 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckRestController_IT.groovy +++ /dev/null @@ -1,20 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.controller - -import org.springframework.http.HttpStatus - -/** - * HealthCheckRestControllerの統合テスト - */ -class HealthCheckRestController_IT extends AbstractController_IT { - - // API PATH - static final String BASE_PATH = "/api/health" - static final String HEALTH_CHECK_PATH = BASE_PATH - - def "ヘルスチェックAPI: 正常系 200 OKを返す"() { - expect: - final request = this.getRequest(HEALTH_CHECK_PATH) - this.execute(request, HttpStatus.OK) - } - -} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy new file mode 100644 index 00000000..b3f4b016 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy @@ -0,0 +1,84 @@ +package dev.abelab.smartpointer.infrastructure.api.controller + +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.helper.TableHelper +import dev.abelab.smartpointer.helper.graphql.GraphQLOperation +import dev.abelab.smartpointer.helper.graphql.GraphQLQuery +import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse + +/** + * RoomControllerの統合テスト + */ +class RoomController_IT extends AbstractController_IT { + + def "ルーム作成API: 正常系 ルームを作成できる"() { + when: + final query = new GraphQLQuery(GraphQLOperation.CREATE_ROOM, [:], RoomResponse) + final response = this.execute(query) + + then: + final rooms = sql.rows("SELECT * FROM room") + rooms.size() == 1 + + response.roomId == rooms[0].id + response.passcode == rooms[0].passcode + } + + def "ルーム削除API: 正常系 ルームを削除できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + "00000000-0000-0000-0000-000000000001" | RandomHelper.numeric(6) + } + // @formatter:on + + when: + final query = new GraphQLQuery(GraphQLOperation.DELETE_ROOM, [roomId: "00000000-0000-0000-0000-000000000000"], String) + final response = this.execute(query) + + then: + response == "00000000-0000-0000-0000-000000000000" + + final rooms = sql.rows("SELECT * FROM room") + rooms*.id == ["00000000-0000-0000-0000-000000000001"] + } + + def "ルーム削除API: 異常系 ルームが存在しない場合は404エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + expect: + final query = new GraphQLQuery(GraphQLOperation.DELETE_ROOM, [roomId: "00000000-0000-0000-0000-000000000001"], String) + this.execute(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + + def "ルーム入室API: 正常系 入室に成功するとアクセストークンを返す"() { + // TODO: テストを書く + } + + def "ルーム入室API: 異常系 リクエストボディのバリデーション"() { + // TODO: テストを書く + } + + def "ルーム入室API: 異常系 ルームが存在しない場合は404エラー"() { + // TODO: テストを書く + } + + def "ルーム入室API: 異常系 パスコードが間違えている場合は401エラー"() { + // TODO: テストを書く + } + + def "ルーム入室API: 異常系 ユーザ名が既に使われている場合は409エラー"() { + // TODO: テストを書く + } + +} From 81bec8f15deb7b267e9f4e2f91810609b2a72791 Mon Sep 17 00:00:00 2001 From: averak Date: Tue, 8 Nov 2022 11:34:54 +0900 Subject: [PATCH 055/189] =?UTF-8?q?[feat]=20=E3=83=AB=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E9=96=A2=E9=80=A3=E3=81=AE=E5=87=A6=E7=90=86=E3=82=92REST?= =?UTF-8?q?=E3=81=8B=E3=82=89GraphQL=E3=81=AB=E7=A7=BB=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/service/UserService.java | 13 ++ .../api/controller/RoomController.java | 6 +- .../api/controller/RoomRestController.java | 4 +- .../smartpointer/usecase/JoinRoomUseCase.java | 16 +- .../AbstractDatabaseSpecification.groovy | 11 +- .../domain/service/UserService_UT.groovy | 30 +++ .../controller/AbstractController_IT.groovy | 186 +---------------- .../api/controller/RoomController_IT.groovy | 125 +++++++++++- .../controller/RoomRestController_IT.groovy | 188 ------------------ .../usecase/JoinRoomUseCase_UT.groovy | 25 ++- 10 files changed, 208 insertions(+), 396 deletions(-) delete mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController_IT.groovy diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/service/UserService.java b/app/src/main/java/dev/abelab/smartpointer/domain/service/UserService.java index 09f1a01f..85cc7e97 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/service/UserService.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/service/UserService.java @@ -3,8 +3,10 @@ import org.springframework.stereotype.Service; import dev.abelab.smartpointer.domain.repository.UserRepository; +import dev.abelab.smartpointer.exception.BadRequestException; import dev.abelab.smartpointer.exception.ConflictException; import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.util.ValidationUtil; import lombok.RequiredArgsConstructor; /** @@ -28,4 +30,15 @@ public void checkIsNameAlreadyUsed(final String roomId, final String name) throw } } + /** + * ユーザ名が有効かチェック + * + * @param name ユーザ名 + */ + public void checkIsNameValid(final String name) throws BadRequestException { + if (!ValidationUtil.checkStringLength(name, 1, 255)) { + throw new BadRequestException(ErrorCode.INVALID_USER_NAME); + } + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java index 73984538..d2e00939 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java @@ -8,6 +8,7 @@ import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse; import dev.abelab.smartpointer.usecase.CreateRoomUseCase; import dev.abelab.smartpointer.usecase.DeleteRoomUseCase; +import dev.abelab.smartpointer.usecase.JoinRoomUseCase; import lombok.RequiredArgsConstructor; /** @@ -21,6 +22,8 @@ public class RoomController { private final DeleteRoomUseCase deleteRoomUseCase; + private final JoinRoomUseCase joinRoomUseCase; + /** * ルーム作成API * @@ -57,8 +60,7 @@ public AccessTokenResponse joinRoom( // @Argument final String passcode, // @Argument final String userName // ) { - // TODO: ルーム入室APIを実装 - return null; + return this.joinRoomUseCase.handle(roomId, passcode, userName); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java index fa5ee2ac..2d3ab337 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java @@ -16,6 +16,8 @@ /** * ルームコントローラ + * + * TODO: STOMPからGraphQLへの移行が完了したら削除する */ @RestController @RequestMapping(path = "/api/rooms", produces = MediaType.APPLICATION_JSON_VALUE) @@ -65,7 +67,7 @@ public AccessTokenResponse joinRoom( // @PathVariable("room_id") final String roomId, // @RequestValidated @RequestBody final RoomJoinRequest requestBody // ) { - return this.joinRoomUseCase.handle(roomId, requestBody); + return this.joinRoomUseCase.handle(roomId, requestBody.getPasscode(), requestBody.getName()); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/JoinRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/JoinRoomUseCase.java index c9b88658..23bda590 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/JoinRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/JoinRoomUseCase.java @@ -12,7 +12,6 @@ import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.NotFoundException; import dev.abelab.smartpointer.exception.UnauthorizedException; -import dev.abelab.smartpointer.infrastructure.api.request.RoomJoinRequest; import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse; import dev.abelab.smartpointer.property.AuthProperty; import io.jsonwebtoken.Jwts; @@ -38,27 +37,30 @@ public class JoinRoomUseCase { * Handle UseCase * * @param roomId ルームID - * @param requestBody ルーム入室リクエスト + * @param passcode パスコード + * @param userName ユーザ名 * @return アクセストークン */ @Transactional - public AccessTokenResponse handle(final String roomId, final RoomJoinRequest requestBody) { + public AccessTokenResponse handle(final String roomId, final String passcode, final String userName) { // ルームの取得 final var room = this.roomRepository.selectById(roomId) // .orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_ROOM)); // パスコードチェック - if (!room.isPasscodeValid(requestBody.getPasscode())) { + if (!room.isPasscodeValid(passcode)) { throw new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE); } - // ユーザ名が使われていないことをチェック - this.userService.checkIsNameAlreadyUsed(roomId, requestBody.getName()); + // ユーザ名チェック + // TODO: Validatorを作成し、Controllerで400チェックする + this.userService.checkIsNameValid(userName); + this.userService.checkIsNameAlreadyUsed(roomId, userName); // ユーザを作成 final var user = UserModel.builder() // .roomId(roomId) // - .name(requestBody.getName()) // + .name(userName) // .build(); this.userRepository.insert(user); diff --git a/app/src/test/groovy/dev/abelab/smartpointer/AbstractDatabaseSpecification.groovy b/app/src/test/groovy/dev/abelab/smartpointer/AbstractDatabaseSpecification.groovy index cdc0f69a..a463d917 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/AbstractDatabaseSpecification.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/AbstractDatabaseSpecification.groovy @@ -3,14 +3,12 @@ package dev.abelab.smartpointer import groovy.sql.Sql import org.springframework.beans.factory.annotation.Autowired import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy -import org.springframework.transaction.annotation.Transactional import javax.sql.DataSource /** * DBテストの基底クラス */ -@Transactional class AbstractDatabaseSpecification extends AbstractSpecification { /** @@ -38,7 +36,14 @@ class AbstractDatabaseSpecification extends AbstractSpecification { */ def cleanup() { // DBを初期化するために、テスト終了時にロールバック - sql.rollback() + // sql.rollback() + + // GraphQLの統合テストが適切にロールバックされないので、無理矢理DBリセットする + sql.execute("SET SQL_SAFE_UPDATES = 0") + sql.execute("DELETE FROM room") + sql.execute("DELETE FROM user") + sql.execute("DELETE FROM timer") + sql.execute("SET SQL_SAFE_UPDATES = 1") } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/domain/service/UserService_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/domain/service/UserService_UT.groovy index 788d501e..78543529 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/domain/service/UserService_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/domain/service/UserService_UT.groovy @@ -1,5 +1,6 @@ package dev.abelab.smartpointer.domain.service +import dev.abelab.smartpointer.exception.BadRequestException import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ConflictException import dev.abelab.smartpointer.exception.ErrorCode @@ -41,4 +42,33 @@ class UserService_UT extends AbstractService_UT { verifyException(exception, new ConflictException(ErrorCode.USER_NAME_IS_ALREADY_EXISTS)) } + def "checkIsNameValid: ユーザ名が有効な場合は何もしない"() { + when: + this.sut.checkIsNameValid(inputUserName) + + then: + noExceptionThrown() + + where: + inputUserName << [ + RandomHelper.alphanumeric(1), + RandomHelper.alphanumeric(255), + ] + } + + def "checkIsNameValid: ユーザ名が不正な場合は400エラー"() { + when: + this.sut.checkIsNameValid(inputUserName) + + then: + final BaseException exception = thrown() + verifyException(exception, new BadRequestException(ErrorCode.INVALID_USER_NAME)) + + where: + inputUserName << [ + RandomHelper.alphanumeric(0), + RandomHelper.alphanumeric(256), + ] + } + } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy index 529373e2..61bf169a 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy @@ -2,26 +2,12 @@ package dev.abelab.smartpointer.infrastructure.api.controller import dev.abelab.smartpointer.AbstractDatabaseSpecification import dev.abelab.smartpointer.exception.BaseException -import dev.abelab.smartpointer.helper.JsonConvertHelper import dev.abelab.smartpointer.helper.graphql.GraphQLQuery -import dev.abelab.smartpointer.infrastructure.api.response.ErrorResponse import dev.abelab.smartpointer.property.AuthProperty import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.autoconfigure.graphql.tester.AutoConfigureHttpGraphQlTester import org.springframework.context.MessageSource import org.springframework.graphql.test.tester.WebGraphQlTester -import org.springframework.http.HttpStatus -import org.springframework.http.MediaType -import org.springframework.mock.web.MockHttpSession -import org.springframework.test.web.servlet.MockMvc -import org.springframework.test.web.servlet.MvcResult -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder -import org.springframework.test.web.servlet.request.MockMvcRequestBuilders -import org.springframework.test.web.servlet.setup.MockMvcBuilders -import org.springframework.transaction.PlatformTransactionManager -import org.springframework.util.MultiValueMap -import org.springframework.web.context.WebApplicationContext -import spock.lang.Shared /** * Controller統合テストの基底クラス @@ -29,170 +15,15 @@ import spock.lang.Shared @AutoConfigureHttpGraphQlTester abstract class AbstractController_IT extends AbstractDatabaseSpecification { - private MockMvc mockMvc - @Autowired private WebGraphQlTester graphQlTester - @Autowired - private WebApplicationContext webApplicationContext - - @Autowired - private PlatformTransactionManager transactionManager - @Autowired private MessageSource messageSource @Autowired protected AuthProperty authProperty - @Shared - protected MockHttpSession session = new MockHttpSession() - - /** - * GET request - * - * @param path path - * - * @return HTTP request builder - */ - MockHttpServletRequestBuilder getRequest(final String path) { - return MockMvcRequestBuilders.get(path) - .session(this.session) - } - - /** - * POST request - * - * @param path path - * - * @return HTTP request builder - */ - MockHttpServletRequestBuilder postRequest(final String path) { - return MockMvcRequestBuilders.post(path) - .session(this.session) - } - - /** - * POST request (Form) - * - * @param path path - * @param params query params - * - * @return HTTP request builder - */ - MockHttpServletRequestBuilder postRequest(final String path, final MultiValueMap params) { - return MockMvcRequestBuilders.post(path) - .contentType(MediaType.APPLICATION_FORM_URLENCODED) - .params(params) - .session(this.session) - } - - /** - * POST request (JSON) - * - * @param path path - * @param content request body - * - * @return HTTP request builder - */ - MockHttpServletRequestBuilder postRequest(final String path, final Object content) { - return MockMvcRequestBuilders.post(path) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(JsonConvertHelper.convertObjectToJson(content)) - .session(this.session) - } - - /** - * PUT request (JSON) - * - * @param path path - * @param content request body - * - * @return HTTP request builder - */ - MockHttpServletRequestBuilder putRequest(final String path, final Object content) { - return MockMvcRequestBuilders.put(path) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(JsonConvertHelper.convertObjectToJson(content)) - .session(this.session) - } - - /** - * DELETE request - * - * @param path path - * - * @return HTTP request builder - */ - MockHttpServletRequestBuilder deleteRequest(final String path) { - return MockMvcRequestBuilders.delete(path) - .session(this.session) - } - - /** - * Execute request - * - * @param request HTTP request builder - * @param status expected HTTP status - * - * @return MVC result - */ - MvcResult execute(final MockHttpServletRequestBuilder request, final HttpStatus status) { - final result = mockMvc.perform(request).andReturn() - - assert result.response.status == status.value() - return result - } - - /** - * Execute request / return response - * - * @param request HTTP request builder - * @param status expected HTTP status - * @param clazz response class - * - * @return response - */ - def T execute(final MockHttpServletRequestBuilder request, final HttpStatus status, final Class clazz) { - final result = mockMvc.perform(request).andReturn() - - assert result.response.status == status.value() - return JsonConvertHelper.convertJsonToObject(result.getResponse().getContentAsString(), clazz) - } - - /** - * Execute request / verify exception - * - * @param request HTTP request builder - * @param exception expected exception - * - * @return error response - */ - ErrorResponse execute(final MockHttpServletRequestBuilder request, final BaseException exception) { - final result = mockMvc.perform(request).andReturn() - final response = JsonConvertHelper.convertJsonToObject(result.response.contentAsString, ErrorResponse.class) - - final expectedErrorMessage = this.getErrorMessage(exception) - - assert result.response.status == exception.httpStatus.value() - assert response.code == exception.errorCode.code - assert response.message == expectedErrorMessage - return response - } - - /** - * エラーメッセージを取得 - * - * @param exception exception - * @return エラーメッセージ - */ - private String getErrorMessage(final BaseException exception) { - final messageKey = exception.errorCode.messageKey - final args = exception.args - return this.messageSource.getMessage(messageKey, args, Locale.ENGLISH) - } - /** * Execute query / return response * @@ -224,16 +55,15 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { } /** - * setup before test case + * エラーメッセージを取得 + * + * @param exception exception + * @return エラーメッセージ */ - def setup() { - this.mockMvc = MockMvcBuilders - .webAppContextSetup(this.webApplicationContext) - .addFilter(({ request, response, chain -> - response.setCharacterEncoding("UTF-8") - chain.doFilter(request, response) - })) - .build() + private String getErrorMessage(final BaseException exception) { + final messageKey = exception.errorCode.messageKey + final args = exception.args + return this.messageSource.getMessage(messageKey, args, Locale.ENGLISH) } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy index b3f4b016..f900ce30 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy @@ -1,11 +1,14 @@ package dev.abelab.smartpointer.infrastructure.api.controller +import dev.abelab.smartpointer.exception.BadRequestException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.exception.UnauthorizedException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper import dev.abelab.smartpointer.helper.graphql.GraphQLOperation import dev.abelab.smartpointer.helper.graphql.GraphQLQuery +import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse /** @@ -62,23 +65,133 @@ class RoomController_IT extends AbstractController_IT { } def "ルーム入室API: 正常系 入室に成功するとアクセストークンを返す"() { - // TODO: テストを書く + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + // @formatter:on + + when: + final query = new GraphQLQuery( + GraphQLOperation.JOIN_ROOM, + [roomId: roomId, passcode: roomPasscode, userName: inputUserName], + AccessTokenResponse + ) + final response = this.execute(query) + + then: + response.tokenType == this.authProperty.tokenType + response.accessToken != null + response.ttl == this.authProperty.ttl + + final createdUser = sql.firstRow("SELECT * FROM user") + createdUser.room_id == roomId + createdUser.name == inputUserName + + where: + inputUserName << [ + RandomHelper.alphanumeric(1), + RandomHelper.alphanumeric(255), + ] } def "ルーム入室API: 異常系 リクエストボディのバリデーション"() { - // TODO: テストを書く + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + // @formatter:on + + expect: + final query = new GraphQLQuery( + GraphQLOperation.JOIN_ROOM, + [roomId: roomId, passcode: roomPasscode, userName: inputUserName], + AccessTokenResponse + ) + this.execute(query, new BadRequestException(expectedErrorCode)) + + where: + inputUserName || expectedErrorCode + RandomHelper.alphanumeric(0) || ErrorCode.INVALID_USER_NAME + RandomHelper.alphanumeric(256) || ErrorCode.INVALID_USER_NAME } def "ルーム入室API: 異常系 ルームが存在しない場合は404エラー"() { - // TODO: テストを書く + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + // @formatter:on + + expect: + final query = new GraphQLQuery( + GraphQLOperation.JOIN_ROOM, + [roomId: roomId + "...", passcode: roomPasscode, userName: RandomHelper.alphanumeric(10)], + AccessTokenResponse + ) + this.execute(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) } def "ルーム入室API: 異常系 パスコードが間違えている場合は401エラー"() { - // TODO: テストを書く + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + // @formatter:on + + expect: + final query = new GraphQLQuery( + GraphQLOperation.JOIN_ROOM, + [roomId: roomId, passcode: roomPasscode + "...", userName: RandomHelper.alphanumeric(10)], + AccessTokenResponse + ) + this.execute(query, new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE)) } - def "ルーム入室API: 異常系 ユーザ名が既に使われている場合は409エラー"() { - // TODO: テストを書く + def "ルーム入室API: 異常系 ユーザ名が既に使われている場合は400エラー"() { + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + final userName = RandomHelper.alphanumeric(10) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + TableHelper.insert sql, "user", { + room_id | name + roomId | userName + } + // @formatter:on + + expect: + final query = new GraphQLQuery( + GraphQLOperation.JOIN_ROOM, + [roomId: roomId, passcode: roomPasscode, userName: userName], + AccessTokenResponse + ) + this.execute(query, new BadRequestException(ErrorCode.USER_NAME_IS_ALREADY_EXISTS)) } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController_IT.groovy deleted file mode 100644 index 987bb0bf..00000000 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController_IT.groovy +++ /dev/null @@ -1,188 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.controller - -import dev.abelab.smartpointer.exception.* -import dev.abelab.smartpointer.helper.RandomHelper -import dev.abelab.smartpointer.helper.TableHelper -import dev.abelab.smartpointer.infrastructure.api.request.RoomJoinRequest -import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse -import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse -import org.springframework.http.HttpStatus - -/** - * RoomRestControllerの統合テスト - */ -class RoomRestController_IT extends AbstractController_IT { - - static final String BASE_PATH = "/api/rooms" - static final String CREATE_ROOM_PATH = BASE_PATH - static final String DELETE_ROOM_PATH = BASE_PATH + "/%s" - static final String JOIN_ROOM_PATH = BASE_PATH + "/%s/join" - - def "ルーム作成API: 正常系 ルームを作成できる"() { - when: - final request = this.postRequest(CREATE_ROOM_PATH) - final response = execute(request, HttpStatus.CREATED, RoomResponse) - - then: - final rooms = sql.rows("SELECT * FROM room") - rooms.size() == 1 - - response.roomId == rooms[0].id - response.passcode == rooms[0].passcode - } - - def "ルーム削除API: 正常系 ルームを削除する"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - // @formatter:on - - when: - final request = this.deleteRequest(String.format(DELETE_ROOM_PATH, roomId)) - this.execute(request, HttpStatus.OK) - - then: - final room = sql.firstRow("SELECT * FROM room WHERE id=:id", [id: roomId]) - room == null - } - - def "ルーム削除API: 異常系 ルームが存在しない場合は404エラー"() { - given: - final roomId = RandomHelper.uuid() - - expect: - final request = this.deleteRequest(String.format(DELETE_ROOM_PATH, roomId)) - this.execute(request, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) - } - - def "ルーム入室API: 正常系 入室に成功するとアクセストークンを返す"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - // @formatter:on - - final requestBody = RoomJoinRequest.builder() - .passcode(roomPasscode) - .name(inputName) - .build() - - when: - final request = this.postRequest(String.format(JOIN_ROOM_PATH, roomId), requestBody) - final response = this.execute(request, HttpStatus.OK, AccessTokenResponse) - - then: - response.tokenType == this.authProperty.tokenType - response.ttl == this.authProperty.ttl - - final createdUser = sql.firstRow("SELECT * FROM user") - createdUser.room_id == roomId - createdUser.name == requestBody.name - - where: - inputName << [ - RandomHelper.alphanumeric(1), - RandomHelper.alphanumeric(255), - ] - } - - def "ルーム入室API: 異常系 リクエストボディのバリデーション"() { - given: - final requestBody = RoomJoinRequest.builder() - .passcode("") - .name(inputName) - .build() - - expect: - final request = this.postRequest(String.format(JOIN_ROOM_PATH, "..."), requestBody) - this.execute(request, new BadRequestException(expectedErrorCode)) - - where: - inputName || expectedErrorCode - RandomHelper.alphanumeric(0) || ErrorCode.INVALID_USER_NAME - RandomHelper.alphanumeric(256) || ErrorCode.INVALID_USER_NAME - } - - def "ルーム入室API: 異常系 ルームが存在しない場合は404エラー"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - // @formatter:on - - final requestBody = RoomJoinRequest.builder() - .passcode(roomPasscode) - .name(RandomHelper.alphanumeric(10)) - .build() - - expect: - final request = this.postRequest(String.format(JOIN_ROOM_PATH, "..."), requestBody) - this.execute(request, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) - } - - def "ルーム入室API: 異常系 パスコードが間違えている場合は401エラー"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - // @formatter:on - - final requestBody = RoomJoinRequest.builder() - .passcode(roomPasscode + "...") - .name(RandomHelper.alphanumeric(10)) - .build() - - expect: - final request = this.postRequest(String.format(JOIN_ROOM_PATH, roomId), requestBody) - this.execute(request, new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE)) - } - - def "ルーム入室API: 異常系 ユーザ名が既に使われている場合は409エラー"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - final userName = RandomHelper.alphanumeric(10) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - TableHelper.insert sql, "user", { - room_id | name - roomId | userName - } - // @formatter:on - - final requestBody = RoomJoinRequest.builder() - .passcode(roomPasscode) - .name(userName) - .build() - - expect: - final request = this.postRequest(String.format(JOIN_ROOM_PATH, roomId), requestBody) - this.execute(request, new ConflictException(ErrorCode.USER_NAME_IS_ALREADY_EXISTS)) - } - -} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/JoinRoomUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/JoinRoomUseCase_UT.groovy index 0fed02ce..136c9ba7 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/JoinRoomUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/JoinRoomUseCase_UT.groovy @@ -6,7 +6,6 @@ import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.exception.UnauthorizedException import dev.abelab.smartpointer.helper.RandomHelper -import dev.abelab.smartpointer.infrastructure.api.request.RoomJoinRequest import dev.abelab.smartpointer.property.AuthProperty import org.springframework.beans.factory.annotation.Autowired @@ -24,15 +23,17 @@ class JoinRoomUseCase_UT extends AbstractUseCase_UT { def "handle: ログインに成功するとアクセストークンを返す"() { given: final room = Spy(RoomModel) - final requestBody = RandomHelper.mock(RoomJoinRequest) + final passcode = RandomHelper.alphanumeric(6) + final userName = RandomHelper.alphanumeric(10) when: - final result = this.sut.handle(room.id, requestBody) + final result = this.sut.handle(room.id, passcode, userName) then: 1 * this.roomRepository.selectById(room.id) >> Optional.of(room) - 1 * room.isPasscodeValid(requestBody.passcode) >> true - 1 * this.userService.checkIsNameAlreadyUsed(room.id, requestBody.name) >> {} + 1 * room.isPasscodeValid(passcode) >> true + 1 * this.userService.checkIsNameValid(userName) >> {} + 1 * this.userService.checkIsNameAlreadyUsed(room.id, userName) >> {} 1 * this.userRepository.insert(_) result.tokenType == this.authProperty.tokenType result.ttl == this.authProperty.ttl @@ -40,11 +41,12 @@ class JoinRoomUseCase_UT extends AbstractUseCase_UT { def "handle: ルームが存在しない場合は404エラー"() { given: - final room = RandomHelper.mock(RoomModel) - final requestBody = RandomHelper.mock(RoomJoinRequest) + final room = Spy(RoomModel) + final passcode = RandomHelper.alphanumeric(6) + final userName = RandomHelper.alphanumeric(10) when: - this.sut.handle(room.id, requestBody) + this.sut.handle(room.id, passcode, userName) then: 1 * this.roomRepository.selectById(room.id) >> Optional.empty() @@ -55,14 +57,15 @@ class JoinRoomUseCase_UT extends AbstractUseCase_UT { def "handle: パスコードが間違えている場合は401エラー"() { given: final room = Spy(RoomModel) - final requestBody = RandomHelper.mock(RoomJoinRequest) + final passcode = RandomHelper.alphanumeric(6) + final userName = RandomHelper.alphanumeric(10) when: - this.sut.handle(room.id, requestBody) + this.sut.handle(room.id, passcode, userName) then: 1 * this.roomRepository.selectById(room.id) >> Optional.of(room) - room.isPasscodeValid(requestBody.passcode) >> false + room.isPasscodeValid(passcode) >> false final BaseException exception = thrown() verifyException(exception, new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE)) } From e1c568d18d78e9250c2975dff91d9b3a4130524a Mon Sep 17 00:00:00 2001 From: averak Date: Tue, 8 Nov 2022 11:53:36 +0900 Subject: [PATCH 056/189] =?UTF-8?q?[fix]=20=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/package-lock.json | 46 +++++++++++++------------- desktop/packages/eslintrc/package.json | 2 +- desktop/packages/main/package.json | 6 ++-- desktop/packages/preload/package.json | 8 ++--- desktop/packages/renderer/package.json | 8 ++--- desktop/packages/shared/package.json | 2 +- desktop/packages/tsconfig/package.json | 2 +- 7 files changed, 37 insertions(+), 37 deletions(-) diff --git a/desktop/package-lock.json b/desktop/package-lock.json index cf454c2d..73e1e8a2 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -12012,7 +12012,7 @@ }, "packages/eslintrc": { "name": "@smartpointer-desktop/eslintrc", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "devDependencies": { "@typescript-eslint/eslint-plugin": "5.41.0", "@typescript-eslint/parser": "5.41.0", @@ -12029,37 +12029,37 @@ "name": "@smartpointer-desktop/main", "version": "1.1.0-SNAPSHOT", "dependencies": { - "@smartpointer-desktop/shared": "1.1.0-NAPSHOT" + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT" }, "devDependencies": { "@openapitools/openapi-generator-cli": "2.5.2", - "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", "@types/ws": "8.5.3" } }, "packages/preload": { "name": "@smartpointer-desktop/preload", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "dependencies": { - "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", "unplugin-auto-expose": "0.0.3" }, "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT" + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT" } }, "packages/renderer": { "name": "@smartpointer-desktop/renderer", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "dependencies": { "@chakra-ui/react": "2.3.6", "@emotion/react": "11.10.5", "@emotion/styled": "11.10.5", "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", - "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", "framer-motion": "7.6.2", "qrcode": "1.5.1", "react": "18.2.0", @@ -12067,8 +12067,8 @@ "unplugin-auto-expose": "0.0.3" }, "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", "@tsconfig/strictest": "1.0.2", "@types/qrcode": "1.5.0", "@types/react": "18.0.24", @@ -12078,14 +12078,14 @@ }, "packages/shared": { "name": "@smartpointer-desktop/shared", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "dependencies": { "@tsconfig/strictest": "1.0.2" } }, "packages/tsconfig": { "name": "@smartpointer-desktop/tsconfig", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "devDependencies": { "@tsconfig/node16-strictest-esm": "1.0.3", "@typescript-eslint/eslint-plugin": "5.41.0", @@ -14342,18 +14342,18 @@ "version": "file:packages/main", "requires": { "@openapitools/openapi-generator-cli": "2.5.2", - "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", - "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", "@types/ws": "8.5.3" } }, "@smartpointer-desktop/preload": { "version": "file:packages/preload", "requires": { - "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", - "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", "unplugin-auto-expose": "0.0.3" } }, @@ -14365,9 +14365,9 @@ "@emotion/styled": "11.10.5", "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", - "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", - "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", "@tsconfig/strictest": "1.0.2", "@types/qrcode": "1.5.0", "@types/react": "18.0.24", diff --git a/desktop/packages/eslintrc/package.json b/desktop/packages/eslintrc/package.json index 392e60fc..c229a414 100644 --- a/desktop/packages/eslintrc/package.json +++ b/desktop/packages/eslintrc/package.json @@ -1,6 +1,6 @@ { "name": "@smartpointer-desktop/eslintrc", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "description": "", "devDependencies": { "@typescript-eslint/eslint-plugin": "5.41.0", diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json index b3a83324..5f00aafc 100644 --- a/desktop/packages/main/package.json +++ b/desktop/packages/main/package.json @@ -10,11 +10,11 @@ "author": "", "devDependencies": { "@openapitools/openapi-generator-cli": "2.5.2", - "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", "@types/ws": "8.5.3" }, "dependencies": { - "@smartpointer-desktop/shared": "1.1.0-NAPSHOT" + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT" } } diff --git a/desktop/packages/preload/package.json b/desktop/packages/preload/package.json index 00632e7f..8a17ad1f 100644 --- a/desktop/packages/preload/package.json +++ b/desktop/packages/preload/package.json @@ -1,10 +1,10 @@ { "name": "@smartpointer-desktop/preload", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "description": "", "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT" + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT" }, "scripts": { "build": "vite build" @@ -12,7 +12,7 @@ "keywords": [], "author": "", "dependencies": { - "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", "unplugin-auto-expose": "0.0.3" } } diff --git a/desktop/packages/renderer/package.json b/desktop/packages/renderer/package.json index 6b5edf60..a72b3796 100644 --- a/desktop/packages/renderer/package.json +++ b/desktop/packages/renderer/package.json @@ -1,10 +1,10 @@ { "name": "@smartpointer-desktop/renderer", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "description": "", "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.1.0-NAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-NAPSHOT", + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", "@tsconfig/strictest": "1.0.2", "@types/qrcode": "1.5.0", "@types/react": "18.0.24", @@ -22,7 +22,7 @@ "@emotion/styled": "11.10.5", "@heroicons/react": "2.0.12", "@react-hook/window-size": "3.1.1", - "@smartpointer-desktop/shared": "1.1.0-NAPSHOT", + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", "framer-motion": "7.6.2", "qrcode": "1.5.1", "react": "18.2.0", diff --git a/desktop/packages/shared/package.json b/desktop/packages/shared/package.json index b85d464d..d030423a 100644 --- a/desktop/packages/shared/package.json +++ b/desktop/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@smartpointer-desktop/shared", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "description": "", "main": "index.ts", "dependencies": { diff --git a/desktop/packages/tsconfig/package.json b/desktop/packages/tsconfig/package.json index d4ba6502..af434bbe 100644 --- a/desktop/packages/tsconfig/package.json +++ b/desktop/packages/tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@smartpointer-desktop/tsconfig", - "version": "1.1.0-NAPSHOT", + "version": "1.1.0-SNAPSHOT", "description": "", "devDependencies": { "@tsconfig/node16-strictest-esm": "1.0.3", From bba76e3ae8fed8d676d9099aa342cbd4b24edc5d Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 8 Nov 2022 13:59:43 +0900 Subject: [PATCH 057/189] fix customPointerType addition --- desktop/packages/main/src/controller/index.ts | 9 ++++++++- desktop/packages/main/src/model/index.ts | 2 +- desktop/packages/main/src/view/tray.ts | 14 ++++++++++---- desktop/packages/shared/index.ts | 2 +- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index d279007c..93f8bab4 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -4,6 +4,7 @@ import { PointerType, User, } from "@smartpointer-desktop/shared"; +import { nanoid } from "nanoid"; import { roomApi } from "@/api"; import * as model from "@/model"; @@ -92,7 +93,13 @@ export const toggleOverlayWindowDevTools = () => { toggleOverlayWindowDevToolsInOverlayWindow(); }; -export const addCustomPointerType = (customPointerType: CustomPointerType) => { +export const addCustomPointerType = () => { + const customPointerType: CustomPointerType = { + id: nanoid(), + name: "New Pointer", + image: "", + }; + model.addedCustomPointerType(customPointerType); updateTray(); diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 9f268774..645dc8b9 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -139,7 +139,7 @@ export const addedCustomPointerType = ( ) => { state = { ...state, - customPointerTypes: [...state.customPointerTypes, customPointerType], + customPointerTypes: [customPointerType, ...state.customPointerTypes], }; }; diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index bc8ef98a..f814c9be 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -29,7 +29,11 @@ const createdRoomMenuTemplate: MenuTemplate = ( { label: "ポインター", submenu: builtInPointers - .concat(state.customPointerTypes) + .concat( + state.customPointerTypes.filter( + (pointerType) => pointerType.image !== undefined + ) + ) .map((pointer) => ({ label: pointer.name, type: "radio", @@ -37,9 +41,6 @@ const createdRoomMenuTemplate: MenuTemplate = ( click: () => controller.selectedPointer(pointer), })), }, - { - label: "自作ポインターの設定", - }, { label: "参加者一覧", accelerator: "CmdOrCtrl+L", @@ -67,6 +68,11 @@ const menuTemplate: MenuTemplate = (state) => [ ? createdRoomMenuTemplate(state) : defaultMenuTemplate(state)), { type: "separator" }, + { + label: "自作ポインターの設定", + click: controller.showCustomPointerTypes, + }, + { type: "separator" }, { role: "quit", label: "アプリを終了", diff --git a/desktop/packages/shared/index.ts b/desktop/packages/shared/index.ts index de49b388..41e9d418 100644 --- a/desktop/packages/shared/index.ts +++ b/desktop/packages/shared/index.ts @@ -34,7 +34,7 @@ export type BuiltInPointerType = { export type CustomPointerType = { id: string; name: string; - image: string; + image?: string; }; export type PointerType = BuiltInPointerType | CustomPointerType; From 8e727ebe53ed8ffd1fb2f05ce24d80ad49dbe8b0 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 8 Nov 2022 14:20:51 +0900 Subject: [PATCH 058/189] fix ipc message channel --- desktop/packages/main/src/view/window/pointerOverlay.ts | 6 +++--- desktop/packages/preload/src/index.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index fa14668c..84e520b7 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -90,7 +90,7 @@ export const updatePointerInOverlayWindow = () => { }) ); - overlayWindow.webContents.send("pointers-updated", message); + overlayWindow.webContents.send("onUpdatePointers", message); }; export const updatePointerTypeInOverlayWindow = () => { @@ -106,14 +106,14 @@ export const updatePointerTypeInOverlayWindow = () => { const message: PointerType = state.selectedPointerType; - overlayWindow.webContents.send("pointer-type-updated", message); + overlayWindow.webContents.send("onUpdatePointerType", message); }; export const closeOverlayWindow = () => { overlayWindow?.close(); }; -ipcMain.handle("get-pointers", (): GetPointerResult => { +ipcMain.handle("getPointers", (): GetPointerResult => { const state = getState(); if (state.status !== "CREATED") { diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index 8991ca4f..b13ba4f9 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -8,7 +8,7 @@ import { ipcRenderer } from "electron"; export const onUpdatePointers = ( callback: (message: UpdatePointersMessage) => void ) => { - ipcRenderer.on("pointers-updated", (_, message: UpdatePointersMessage) => { + ipcRenderer.on("onUpdatePointers", (_, message: UpdatePointersMessage) => { callback(message); }); }; @@ -16,12 +16,12 @@ export const onUpdatePointers = ( export const onUpdatePointerType = ( callback: (message: PointerType) => void ) => { - ipcRenderer.on("pointer-type-updated", (_, message: PointerType) => { + ipcRenderer.on("onUpdatePointerType", (_, message: PointerType) => { callback(message); }); }; export const getPointers = async (): Promise => { - const pointers: GetPointerResult = await ipcRenderer.invoke("get-pointers"); + const pointers: GetPointerResult = await ipcRenderer.invoke("getPointers"); return pointers; }; From f211242bb5530a8c876cb7ab91805414d6ce8dba Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 8 Nov 2022 14:21:55 +0900 Subject: [PATCH 059/189] change new custom pointer name --- desktop/packages/main/src/controller/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 93f8bab4..eb43797e 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -96,7 +96,7 @@ export const toggleOverlayWindowDevTools = () => { export const addCustomPointerType = () => { const customPointerType: CustomPointerType = { id: nanoid(), - name: "New Pointer", + name: "新規カスタムポインター", image: "", }; From e97182f39bcf66a26652f924d7387c8d1e8dcdce Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 8 Nov 2022 15:36:58 +0900 Subject: [PATCH 060/189] use native crypto module to generate id --- desktop/packages/main/src/controller/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index eb43797e..e42b4f95 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -4,7 +4,7 @@ import { PointerType, User, } from "@smartpointer-desktop/shared"; -import { nanoid } from "nanoid"; +import { randomUUID } from "crypto"; import { roomApi } from "@/api"; import * as model from "@/model"; From e61849d6719d66fefc7938a8906f76641055323c Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 8 Nov 2022 15:52:39 +0900 Subject: [PATCH 061/189] add customPointerTypes Window --- desktop/package-lock.json | 77 +++++++--- desktop/package.json | 1 - desktop/packages/main/src/controller/index.ts | 17 ++- .../src/view/window/cumstomPointerType.ts | 71 +++++++++ desktop/packages/preload/src/index.ts | 35 +++++ .../packages/renderer/customPointerTypes.html | 16 ++ desktop/packages/renderer/package.json | 1 + .../renderer/src/customPointerTypes/App.tsx | 140 ++++++++++++++++++ .../CustomPointerTypeTabItem.tsx | 129 ++++++++++++++++ .../renderer/src/customPointerTypes/main.tsx | 16 ++ .../renderer/src/customPointerTypes/theme.ts | 14 ++ .../src/customPointerTypes/useAutosave.tsx | 51 +++++++ .../src/customPointerTypes/useDebounce.ts | 16 ++ desktop/packages/renderer/vite.config.ts | 1 + 14 files changed, 565 insertions(+), 20 deletions(-) create mode 100644 desktop/packages/main/src/view/window/cumstomPointerType.ts create mode 100644 desktop/packages/renderer/customPointerTypes.html create mode 100644 desktop/packages/renderer/src/customPointerTypes/App.tsx create mode 100644 desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx create mode 100644 desktop/packages/renderer/src/customPointerTypes/main.tsx create mode 100644 desktop/packages/renderer/src/customPointerTypes/theme.ts create mode 100644 desktop/packages/renderer/src/customPointerTypes/useAutosave.tsx create mode 100644 desktop/packages/renderer/src/customPointerTypes/useDebounce.ts diff --git a/desktop/package-lock.json b/desktop/package-lock.json index b3d753ca..37cbdfb8 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -16,7 +16,6 @@ "@stomp/stompjs": "6.1.2", "axios": "1.1.3", "electron-store": "8.1.0", - "nanoid": "4.0.0", "ws": "8.10.0" }, "devDependencies": { @@ -4120,6 +4119,14 @@ "node": ">=10.12.0" } }, + "node_modules/attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "engines": { + "node": ">=4" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -7243,6 +7250,17 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/file-type": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", @@ -9154,17 +9172,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "node_modules/nanoid": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", - "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==", - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^14 || ^16 || >=18" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -10403,6 +10410,22 @@ "react": "^18.2.0" } }, + "node_modules/react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, "node_modules/react-fast-compare": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", @@ -12320,6 +12343,7 @@ "qrcode": "1.5.1", "react": "18.2.0", "react-dom": "18.2.0", + "react-dropzone": "14.2.3", "unplugin-auto-expose": "0.0.3" }, "devDependencies": { @@ -14633,6 +14657,7 @@ "qrcode": "1.5.1", "react": "18.2.0", "react-dom": "18.2.0", + "react-dropzone": "14.2.3", "unplugin-auto-expose": "0.0.3" } }, @@ -15445,6 +15470,11 @@ "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==" }, + "attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -17780,6 +17810,14 @@ "flat-cache": "^3.0.4" } }, + "file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "requires": { + "tslib": "^2.4.0" + } + }, "file-type": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", @@ -19225,11 +19263,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nanoid": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", - "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==" - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -20157,6 +20190,16 @@ "scheduler": "^0.23.0" } }, + "react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "requires": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + } + }, "react-fast-compare": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", diff --git a/desktop/package.json b/desktop/package.json index c36ecc68..44147697 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -24,7 +24,6 @@ "@stomp/stompjs": "6.1.2", "axios": "1.1.3", "electron-store": "8.1.0", - "nanoid": "4.0.0", "ws": "8.10.0" }, "devDependencies": { diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index e42b4f95..f5953673 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -15,6 +15,10 @@ import { } from "@/stomp"; import { store } from "@/store"; import { updateTray } from "@/view/tray"; +import { + showCustomPointerTypesWindow, + updateCustomPointerTypeInCustomPointerTypesWindow, +} from "@/view/window/cumstomPointerType"; import { closeInviteLinkWindow, showInviteLinkWindow, @@ -95,9 +99,8 @@ export const toggleOverlayWindowDevTools = () => { export const addCustomPointerType = () => { const customPointerType: CustomPointerType = { - id: nanoid(), + id: randomUUID(), name: "新規カスタムポインター", - image: "", }; model.addedCustomPointerType(customPointerType); @@ -105,6 +108,8 @@ export const addCustomPointerType = () => { updateTray(); store.set("customPointerTypes", model.getState().customPointerTypes); + + updateCustomPointerTypeInCustomPointerTypesWindow(); }; export const removeCustomPointerType = ( @@ -115,6 +120,8 @@ export const removeCustomPointerType = ( updateTray(); store.set("customPointerTypes", model.getState().customPointerTypes); + + updateCustomPointerTypeInCustomPointerTypesWindow(); }; export const updateCustomPointerType = ( @@ -125,4 +132,10 @@ export const updateCustomPointerType = ( updateTray(); store.set("customPointerTypes", model.getState().customPointerTypes); + + updateCustomPointerTypeInCustomPointerTypesWindow(); +}; + +export const showCustomPointerTypes = () => { + showCustomPointerTypesWindow(); }; diff --git a/desktop/packages/main/src/view/window/cumstomPointerType.ts b/desktop/packages/main/src/view/window/cumstomPointerType.ts new file mode 100644 index 00000000..29ba8df3 --- /dev/null +++ b/desktop/packages/main/src/view/window/cumstomPointerType.ts @@ -0,0 +1,71 @@ +import { CustomPointerType } from "@smartpointer-desktop/shared"; +import { app, BrowserWindow, ipcMain } from "electron"; +import { join } from "path"; + +import * as controller from "@/controller"; +import { getState } from "@/model"; + +import { loadFile } from "./loadFile"; + +let customPointerTypesWindow: BrowserWindow | null = null; + +export const showCustomPointerTypesWindow = async () => { + if ( + customPointerTypesWindow === null || + customPointerTypesWindow.isDestroyed() + ) { + customPointerTypesWindow = new BrowserWindow({ + width: 800, + height: 600, + title: "カスタムポインターの設定 - スマートポインター", + show: false, + webPreferences: { + preload: join( + app.getAppPath(), + "packages", + "preload", + "dist", + "index.cjs" + ), + }, + }); + + await loadFile(customPointerTypesWindow, "customPointerTypes.html"); + } + + customPointerTypesWindow.show(); +}; + +export const closeInviteLinkWindow = () => { + customPointerTypesWindow?.close(); +}; + +export const updateCustomPointerTypeInCustomPointerTypesWindow = () => { + const { customPointerTypes } = getState(); + customPointerTypesWindow?.webContents.send( + "onUpdateCustomPointerTypes", + customPointerTypes + ); +}; + +ipcMain.handle("getCustomPointerTypes", () => { + return getState().customPointerTypes; +}); + +ipcMain.on( + "updateCustomPointerType", + (_, customPointerType: CustomPointerType) => { + controller.updateCustomPointerType(customPointerType); + } +); + +ipcMain.on("addCustomPointerType", () => { + controller.addCustomPointerType(); +}); + +ipcMain.on( + "removeCustomPointerType", + (_, customPointerType: CustomPointerType) => { + controller.removeCustomPointerType(customPointerType); + } +); diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index b13ba4f9..89d6bc4b 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -1,4 +1,5 @@ import type { + CustomPointerType, GetPointerResult, PointerType, UpdatePointersMessage, @@ -25,3 +26,37 @@ export const getPointers = async (): Promise => { const pointers: GetPointerResult = await ipcRenderer.invoke("getPointers"); return pointers; }; + +export const onUpdateCustomPointerTypes = ( + callback: (customPointerTypes: CustomPointerType[]) => void +) => { + ipcRenderer.on( + "onUpdateCustomPointerTypes", + (_, customPointerTypes: CustomPointerType[]) => { + callback(customPointerTypes); + } + ); +}; + +export const getCustomPointerTypes = async (): Promise => { + const customPointerTypes: CustomPointerType[] = await ipcRenderer.invoke( + "getCustomPointerTypes" + ); + return customPointerTypes; +}; + +export const updateCustomPointerType = ( + customPointerType: CustomPointerType +) => { + ipcRenderer.send("updateCustomPointerType", customPointerType); +}; + +export const addCustomPointerType = () => { + ipcRenderer.send("addCustomPointerType"); +}; + +export const removeCustomPointerType = ( + customPointerType: CustomPointerType +) => { + ipcRenderer.send("removeCustomPointerType", customPointerType); +}; diff --git a/desktop/packages/renderer/customPointerTypes.html b/desktop/packages/renderer/customPointerTypes.html new file mode 100644 index 00000000..1c5bf12f --- /dev/null +++ b/desktop/packages/renderer/customPointerTypes.html @@ -0,0 +1,16 @@ + + + + + + + カスタムポインターの設定 - スマートポインター + + +
+ + + diff --git a/desktop/packages/renderer/package.json b/desktop/packages/renderer/package.json index 6b5edf60..44d21ec8 100644 --- a/desktop/packages/renderer/package.json +++ b/desktop/packages/renderer/package.json @@ -27,6 +27,7 @@ "qrcode": "1.5.1", "react": "18.2.0", "react-dom": "18.2.0", + "react-dropzone": "14.2.3", "unplugin-auto-expose": "0.0.3" } } diff --git a/desktop/packages/renderer/src/customPointerTypes/App.tsx b/desktop/packages/renderer/src/customPointerTypes/App.tsx new file mode 100644 index 00000000..ce82c056 --- /dev/null +++ b/desktop/packages/renderer/src/customPointerTypes/App.tsx @@ -0,0 +1,140 @@ +import { + TabList, + TabPanel, + TabPanels, + Tab, + Tabs, + VStack, + Image, + Flex, + Button, + Heading, + Icon, + Text, + Spacer, + HStack, +} from "@chakra-ui/react"; +import type { CustomPointerType } from "@smartpointer-desktop/shared"; +import { FC, useEffect, useState } from "react"; + +import { CustomPointerTypeTabItem } from "./CustomPointerTypeTabItem"; + +import { + getCustomPointerTypes, + onUpdateCustomPointerTypes, + addCustomPointerType, +} from "#preload"; + +export const App: FC = () => { + const [customPointerTypes, setCustomPointerTypes] = useState< + CustomPointerType[] + >([]); + + useEffect(() => { + getCustomPointerTypes().then(setCustomPointerTypes); + onUpdateCustomPointerTypes(setCustomPointerTypes); + }, []); + + return ( + + + カスタムポインターの設定 + + + + + + {customPointerTypes.map(({ id, name, image }) => ( + + + {image ? ( + + ) : ( + + + + )} + + {name || "名前が設定されていません"} + + + + ))} + + + {customPointerTypes.map((customPointerType) => ( + + + + ))} + + + + ); +}; diff --git a/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx b/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx new file mode 100644 index 00000000..31055475 --- /dev/null +++ b/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx @@ -0,0 +1,129 @@ +import { + Box, + VStack, + FormControl, + FormLabel, + Input, + FormHelperText, + Image, + Center, + Button, + Icon, + Text, +} from "@chakra-ui/react"; +import type { CustomPointerType } from "@smartpointer-desktop/shared"; +import { FC, FormEvent, useState } from "react"; +import { useDropzone } from "react-dropzone"; + +import { useAutosave } from "./useAutosave"; + +import { updateCustomPointerType, removeCustomPointerType } from "#preload"; + +export const CustomPointerTypeTabItem: FC<{ + customPointerType: CustomPointerType; +}> = ({ customPointerType }) => { + const [values, setValues] = useState(customPointerType); + + const onChanges = (e: FormEvent) => { + const { name, value } = e.currentTarget; + setValues((prev) => ({ + ...prev, + [name]: value, + })); + }; + + useAutosave({ + data: values, + onSave: (data) => { + if (data !== customPointerType) { + updateCustomPointerType(data); + } + }, + }); + + const { getRootProps, getInputProps } = useDropzone({ + accept: { "image/*": [] }, + onDrop: (acceptedFiles) => { + const file = acceptedFiles[0]; + if (file) { + const reader = new FileReader(); + reader.onload = () => { + const result = reader.result; + if (result) { + console.log(result); + setValues((prev) => ({ ...prev, image: result.toString() })); + } + }; + reader.readAsDataURL(file); + } + }, + }); + + return ( + + + カスタムポインター名 + + + + 画像 + +
+ {values.image ? ( + + ) : ( +
+ + + + + + no image + +
+ )} + + + クリックして画像を選択するか、ここにドラッグ&ドロップしてください + +
+
+
+ + + +
+ ); +}; diff --git a/desktop/packages/renderer/src/customPointerTypes/main.tsx b/desktop/packages/renderer/src/customPointerTypes/main.tsx new file mode 100644 index 00000000..5bea7100 --- /dev/null +++ b/desktop/packages/renderer/src/customPointerTypes/main.tsx @@ -0,0 +1,16 @@ +import { ChakraProvider } from "@chakra-ui/react"; +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; + +import { App } from "./App"; +import { theme } from "./theme"; + +// HTML で定義されているので disable +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +createRoot(document.getElementById("root")!).render( + + + + + +); diff --git a/desktop/packages/renderer/src/customPointerTypes/theme.ts b/desktop/packages/renderer/src/customPointerTypes/theme.ts new file mode 100644 index 00000000..d2643eb2 --- /dev/null +++ b/desktop/packages/renderer/src/customPointerTypes/theme.ts @@ -0,0 +1,14 @@ +import { extendTheme } from "@chakra-ui/react"; + +const styles = { + global: { + "html, body, #root": { + w: "100vw", + h: "100vh", + }, + }, +}; + +export const theme = extendTheme({ + styles, +}); diff --git a/desktop/packages/renderer/src/customPointerTypes/useAutosave.tsx b/desktop/packages/renderer/src/customPointerTypes/useAutosave.tsx new file mode 100644 index 00000000..e55c55f9 --- /dev/null +++ b/desktop/packages/renderer/src/customPointerTypes/useAutosave.tsx @@ -0,0 +1,51 @@ +import { useEffect, useRef } from "react"; + +import { useDebounce } from "./useDebounce"; + +export function useAutosave({ + data, + onSave, + interval = 2000, + saveOnUnmount = true, +}: { + /** The controlled form value to be auto saved */ + data: TData; + /** Callback function to save your data */ + onSave: (data: TData) => Promise | TReturn | void; + /** The number of milliseconds between save attempts. Defaults to 2000 */ + interval?: number; + /** Set to false if you do not want the save function to fire on unmount */ + saveOnUnmount?: boolean; +}) { + const valueOnCleanup = useRef(data); + const initialRender = useRef(true); + const handleSave = useRef(onSave); + + const debouncedValueToSave = useDebounce(data, interval); + + useEffect(() => { + if (initialRender.current) { + initialRender.current = false; + } else { + handleSave.current(debouncedValueToSave); + } + }, [debouncedValueToSave]); + + useEffect(() => { + valueOnCleanup.current = data; + }, [data]); + + useEffect(() => { + handleSave.current = onSave; + }, [onSave]); + + useEffect( + () => () => { + if (saveOnUnmount && data !== valueOnCleanup.current) { + console.log("cleanup"); + handleSave.current(valueOnCleanup.current); + } + }, + [data, saveOnUnmount] + ); +} diff --git a/desktop/packages/renderer/src/customPointerTypes/useDebounce.ts b/desktop/packages/renderer/src/customPointerTypes/useDebounce.ts new file mode 100644 index 00000000..68b1941e --- /dev/null +++ b/desktop/packages/renderer/src/customPointerTypes/useDebounce.ts @@ -0,0 +1,16 @@ +import { useEffect, useState } from "react"; + +export function useDebounce(data: TData, interval: number) { + const [liveData, setLiveData] = useState(data); + + useEffect(() => { + const handler = setTimeout(() => { + setLiveData(data); + }, interval); + return () => { + clearTimeout(handler); + }; + }, [data, interval]); + + return liveData; +} diff --git a/desktop/packages/renderer/vite.config.ts b/desktop/packages/renderer/vite.config.ts index 64e72221..10698944 100644 --- a/desktop/packages/renderer/vite.config.ts +++ b/desktop/packages/renderer/vite.config.ts @@ -30,6 +30,7 @@ export default defineConfig({ input: { link: join(PACKAGE_ROOT, "link.html"), overlay: join(PACKAGE_ROOT, "overlay.html"), + customPointerTypes: join(PACKAGE_ROOT, "customPointerTypes.html"), }, }, emptyOutDir: true, From fb5407fe86431caec2d4c2a4c290516c0257cf60 Mon Sep 17 00:00:00 2001 From: averak Date: Tue, 8 Nov 2022 14:58:44 +0900 Subject: [PATCH 062/189] =?UTF-8?q?[feat]=20GraphQL=E3=81=AE=E3=82=B9?= =?UTF-8?q?=E3=82=AD=E3=83=BC=E3=83=9E=E8=A8=AD=E8=A8=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/enums/SlideControl.java | 4 +- .../smartpointer/enums/TimerStatus.java | 7 +- .../api/response/RoomResponse.java | 4 +- .../controller/IndexController.java | 18 - .../main/resources/graphql/schema.graphqls | 308 +++++++++++++++++- .../smartpointer/enums/TimerStatus_UT.groovy | 1 + .../api/controller/RoomController_IT.groovy | 2 +- 7 files changed, 311 insertions(+), 33 deletions(-) delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/controller/IndexController.java diff --git a/app/src/main/java/dev/abelab/smartpointer/enums/SlideControl.java b/app/src/main/java/dev/abelab/smartpointer/enums/SlideControl.java index 28789a03..37a25c2a 100644 --- a/app/src/main/java/dev/abelab/smartpointer/enums/SlideControl.java +++ b/app/src/main/java/dev/abelab/smartpointer/enums/SlideControl.java @@ -14,12 +14,12 @@ public enum SlideControl { /** - * 準備中 + * 進める */ NEXT(0), /** - * 実行中 + * 戻す */ PREVIOUS(1); diff --git a/app/src/main/java/dev/abelab/smartpointer/enums/TimerStatus.java b/app/src/main/java/dev/abelab/smartpointer/enums/TimerStatus.java index a489cece..2c9bdea8 100644 --- a/app/src/main/java/dev/abelab/smartpointer/enums/TimerStatus.java +++ b/app/src/main/java/dev/abelab/smartpointer/enums/TimerStatus.java @@ -21,7 +21,12 @@ public enum TimerStatus { /** * 実行中 */ - RUNNING(1); + RUNNING(1), + + /** + * 一時停止中 + */ + PAUSED(2); /** * タイマーステータスID diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java index 40e392bf..58a39602 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java @@ -18,7 +18,7 @@ public class RoomResponse { /** * ルームID */ - String roomId; + String id; /** * パスコード @@ -26,7 +26,7 @@ public class RoomResponse { String passcode; public RoomResponse(final RoomModel roomModel) { - this.roomId = roomModel.getId(); + this.id = roomModel.getId(); this.passcode = roomModel.getPasscode(); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/controller/IndexController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/controller/IndexController.java deleted file mode 100644 index cf54b717..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/controller/IndexController.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.controller; - -import org.springframework.stereotype.Controller; - -/** - * Index Controller - */ -@Controller -public class IndexController { - - /* - * TODO: /ws/**アクセスを横取りしてしまうので、とりあえずコメントアウト - * - * @RequestMapping("/** /{path:[^\\.]*}") public String redirect(@PathVariable String path) { return - * "forward:/"; } - */ - -} diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 67ee7324..1abcf641 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -5,32 +5,322 @@ schema { } type Query { + """ + ヘルスチェックAPI + """ health: Boolean + + """ + ユーザリスト取得API + """ + getUsers( + """ + ルームID + """ + roomId: ID! + ): Users + + """ + タイマー取得API + """ + getTimer( + """ + ルームID + """ + roomId: ID! + ): Timer } type Mutation { - createRoom: RoomResponse - deleteRoom(roomId: ID!): ID! - joinRoom(roomId: ID!, passcode: String, userName: String): AccessTokenResponse + """ + ルーム作成API + """ + createRoom: Room + + """ + ルーム削除API + """ + deleteRoom( + """ + ルームID + """ + roomId: ID! + ): ID! + + """ + ルーム入室API + """ + joinRoom( + """ + ルームID + """ + roomId: ID!, + + """ + パスコード + """ + passcode: String, + + """ + ユーザ名 + """ + userName: String + ): AccessToken + + """ + タイマー開始API + """ + startTimer( + """ + 入力時間 [s] + """ + inputTime: Int + ): Timer + + """ + タイマー再開API + """ + resumeTimer: Timer + + """ + タイマー停止API + """ + stopTimer( + """ + 一時停止時点での残り時間 [s] + """ + remainingTimeAtPaused: Int + ): Timer + + """ + タイマーリセットAPI + """ + resetTimer: Timer + + """ + スライドを進めるAPI + """ + goNextSlide: SlideControl + + """ + スライドを戻すAPI + """ + goPreviousSlide: SlideControl + + """ + ポインター操作API + """ + movePointer: PointerControl + + """ + ポインター切断API + """ + disconnectPointer: PointerControl } type Subscription { - getUsers(roomId: ID!): [UserResponse] + """ + ユーザリスト購読API + """ + subscribeToUsers( + """ + ルームID + """ + roomId: ID! + ): [User] + + """ + タイマー購読API + """ + subscribeToTimer( + """ + ルームID + """ + roomId: ID! + ): Timer + + """ + スライド操作購読API + """ + subscribeToSlideControl( + """ + ルームID + """ + roomId: ID! + ): SlideControl + + """ + ポインター操作購読API + """ + subscribeToPointer( + """ + ルームID + """ + roomId: ID! + ): PointerControl + + """ + ポインター切断イベント購読API + """ + subscribeToPointerDisconnectEvent( + """ + ルームID + """ + roomId: ID! + ): User } -type RoomResponse { - roomId: ID! +""" +ルーム +""" +type Room { + """ + ルームID + """ + id: ID! + + """ + パスコード + """ passcode: String } -type AccessTokenResponse { +""" +アクセストークン +""" +type AccessToken { + """ + トークンタイプ + """ tokenType: String + + """ + アクセストークン + """ accessToken: String + + """ + TTL [s] + """ ttl: Int } -type UserResponse { +""" +ユーザ +""" +type User { + """ + ユーザID + """ id: ID! - roomId: String + + """ + ルーム名 + """ name: String +} + +""" +ユーザリスト +""" +type Users { + """ + ユーザリスト + """ + users: [User] +} + +""" +タイマー +""" +type Timer { + """ + 入力時間 [s] + """ + inputTime: Int + + """ + 終了時刻 + """ + finishAt: String + + """ + 一時停止時点での残り時間 [s] + """ + remainingTimeAtPaused: Int + + """ + ステータス + """ + status: TimerStatus +} + +""" +ポインター操作 +""" +type PointerControl { + """ + 操作方向 + """ + orientation: PointerControlOrientation + + """ + 操作者 + """ + user: User +} + +""" +ポインター操作方向 +""" +type PointerControlOrientation { + """ + α値 + """ + alpha: Float + + """ + β値 + """ + beta: Float + + """ + γ値 + """ + gamma: Float +} + +""" +タイマーステータス +""" +enum TimerStatus { + """ + 準備中 + """ + READY + + """ + 実行中 + """ + RUNNING + + """ + 一時停止中 + """ + PAUSED +} + +""" +スライド操作 +""" +enum SlideControl { + """ + 進める + """ + NEXT + + """ + 戻す + """ + PREVIOUS } \ No newline at end of file diff --git a/app/src/test/groovy/dev/abelab/smartpointer/enums/TimerStatus_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/enums/TimerStatus_UT.groovy index b260a783..9bc3b1a3 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/enums/TimerStatus_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/enums/TimerStatus_UT.groovy @@ -18,6 +18,7 @@ class TimerStatus_UT extends AbstractSpecification { inputId || expectedResult TimerStatus.READY.id || Optional.of(TimerStatus.READY) TimerStatus.RUNNING.id || Optional.of(TimerStatus.RUNNING) + TimerStatus.PAUSED.id || Optional.of(TimerStatus.PAUSED) -1 || Optional.empty() } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy index f900ce30..834a9cf9 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy @@ -25,7 +25,7 @@ class RoomController_IT extends AbstractController_IT { final rooms = sql.rows("SELECT * FROM room") rooms.size() == 1 - response.roomId == rooms[0].id + response.id == rooms[0].id response.passcode == rooms[0].passcode } From 2e72beceaa77392233de4b9ed60b40e5032b624d Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 8 Nov 2022 16:59:35 +0900 Subject: [PATCH 063/189] change package manager yarn -> npm in pointer --- .github/workflows/ci.yml | 10 +- Jenkinsfile | 6 +- app/src/main/pointer/README.md | 8 +- app/src/main/pointer/package-lock.json | 14844 +++++++++++++++++++++++ app/src/main/pointer/package.json | 2 +- app/src/main/pointer/yarn.lock | 4794 -------- desktop/package.json | 2 +- 7 files changed, 14858 insertions(+), 4808 deletions(-) create mode 100644 app/src/main/pointer/package-lock.json delete mode 100644 app/src/main/pointer/yarn.lock diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 40cf5b35..14c6081b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,16 +73,16 @@ jobs: uses: actions/setup-node@v3 with: node-version: 16 - cache: yarn - cache-dependency-path: ./app/src/main/pointer/yarn.lock + cache: npm + cache-dependency-path: ./app/src/main/pointer/package-lock.json - name: dependencies - run: yarn install + run: npm install - name: code check run: | - yarn code-check + npm run code-check - name: build run: | - yarn build + npm run build diff --git a/Jenkinsfile b/Jenkinsfile index fffff089..76057d97 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -21,8 +21,8 @@ pipeline { } steps { dir("app/src/main/pointer") { - sh "yarn install" - sh "yarn build" + sh "npm ci" + sh "npm run build" } } } @@ -55,4 +55,4 @@ pipeline { webhookURL: DISCORD_WEBHOOK_URL } } -} \ No newline at end of file +} diff --git a/app/src/main/pointer/README.md b/app/src/main/pointer/README.md index a75f2903..51f295d2 100644 --- a/app/src/main/pointer/README.md +++ b/app/src/main/pointer/README.md @@ -13,7 +13,7 @@ ### 環境構築 ```sh -yarn install +npm install ``` #### エディタの設定 @@ -39,19 +39,19 @@ yarn install ### 開発用サーバの起動 ```sh -yarn run dev +npm run dev ``` ### コードチェック ```sh -yarn run code-check +npm run code-check ``` ### ビルド方法 ```sh -yarn build +npm run build ``` ### 使用技術 diff --git a/app/src/main/pointer/package-lock.json b/app/src/main/pointer/package-lock.json new file mode 100644 index 00000000..d915f6e8 --- /dev/null +++ b/app/src/main/pointer/package-lock.json @@ -0,0 +1,14844 @@ +{ + "name": "pointer", + "version": "1.1.0-SNAPSHOT", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "pointer", + "version": "1.1.0-SNAPSHOT", + "dependencies": { + "@chakra-ui/react": "2.3.5", + "@emotion/react": "11.10.4", + "@emotion/styled": "11.10.4", + "@heroicons/react": "^2.0.12", + "@stomp/stompjs": "^6.1.2", + "axios": "^1.1.3", + "framer-motion": "7.5.3", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-hook-form": "^7.38.0" + }, + "devDependencies": { + "@openapitools/openapi-generator-cli": "^2.5.2", + "@types/react": "^18.0.17", + "@types/react-dom": "^18.0.6", + "@typescript-eslint/eslint-plugin": "^5.40.0", + "@typescript-eslint/parser": "^5.40.0", + "@vitejs/plugin-basic-ssl": "^0.1.2", + "@vitejs/plugin-react": "^2.1.0", + "eslint": "^8.25.0", + "eslint-config-prettier": "^8.5.0", + "eslint-import-resolver-typescript": "^3.5.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-react": "^7.31.10", + "eslint-plugin-react-hooks": "^4.6.0", + "msw": "^0.47.4", + "npm-run-all": "^4.1.5", + "prettier": "^2.7.1", + "typescript": "^4.6.4", + "vite": "^3.1.0", + "vitest": "^0.24.3" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", + "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", + "dependencies": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "dependencies": { + "regenerator-runtime": "^0.13.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz", + "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==", + "dev": true, + "dependencies": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@chakra-ui/accordion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.1.tgz", + "integrity": "sha512-5f4QBl/0EgU/9EVvzlj8ZU7SWwG6nUHCE9moGBCbgiIOVBEySxZ5Robsk6+T7sXmzQ41db04GcUE9NRKdalgIA==", + "dependencies": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.10" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/alert": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", + "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", + "dependencies": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/anatomy": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", + "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" + }, + "node_modules/@chakra-ui/avatar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.1.1.tgz", + "integrity": "sha512-lTZPUq4Pefxgv3ndyJMxIHgFrXwdz2VZFCLF/aKcuGaUlB7TBYaCurQ7TNbME8j8VkJWNX+vKiVHPYvxsrITwQ==", + "dependencies": { + "@chakra-ui/image": "2.0.11", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/breadcrumb": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.0.10.tgz", + "integrity": "sha512-roKFA7nheq18eWNAdrHV6w8A9vZMSQTEEsbL6eU0lhUkolW9RlDjBl1bZvE7icFkNFXlJ33n8+0QAezLI+mMrQ==", + "dependencies": { + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/breakpoint-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", + "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + }, + "node_modules/@chakra-ui/button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", + "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/checkbox": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.1.tgz", + "integrity": "sha512-soTeXEI+4UZSA4B4rRLpdh3cIW/gdhY6k0eXF4ZWExPb+dJ5Giv497S96vS4IGE7SJ7Ugw9kaWS+do2lSiPJew==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/visually-hidden": "2.0.11", + "@zag-js/focus-visible": "0.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/clickable": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", + "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", + "dependencies": { + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/close-button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", + "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "dependencies": { + "@chakra-ui/icon": "3.0.11" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/color-mode": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", + "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", + "dependencies": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/control-box": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", + "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/counter": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", + "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", + "dependencies": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/css-reset": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", + "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", + "peerDependencies": { + "@emotion/react": ">=10.0.35", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/descendant": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", + "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/dom-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", + "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" + }, + "node_modules/@chakra-ui/editable": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.12.tgz", + "integrity": "sha512-37bDqm+j2JTN2XR443KRK9MmHHIQuS6fN+2TRuFgjfG8TomxxCJnhJ3GIfQSKh5Yjtnt4sXDmL4L0tyDpNrrrw==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/event-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", + "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" + }, + "node_modules/@chakra-ui/focus-lock": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", + "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", + "dependencies": { + "@chakra-ui/dom-utils": "2.0.3", + "react-focus-lock": "^2.9.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/form-control": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", + "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", + "dependencies": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/hooks": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.0.11.tgz", + "integrity": "sha512-mYN4u9lbjDjEr/VucrVcLGg/sIO6gA9ZprcT3n9CBGSWt3xih7fCOJmE+yRcCNbL7335AMrv7a/M5Q30aRArcA==", + "dependencies": { + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/utils": "2.0.11", + "compute-scroll-into-view": "1.0.14", + "copy-to-clipboard": "3.3.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/icon": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", + "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", + "dependencies": { + "@chakra-ui/shared-utils": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/image": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", + "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", + "dependencies": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/input": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.11.tgz", + "integrity": "sha512-kaV0VCz6/yzoCKQnh/tMUVgh+Rp6EnM+WzJ37SVX1gDvErON2bmmVLU45BiRoWUcd50wOhDlpsNVUWP0sLlCDA==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/layout": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.8.tgz", + "integrity": "sha512-pcNUNgMh+e4wepNOlCg5iDrxGg4VFBpqZPmSHoP4TyPN2ddEnDRLoMLaREMoX7gEVyTsqEFOFg+wa3JZK32H4A==", + "dependencies": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/lazy-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", + "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" + }, + "node_modules/@chakra-ui/live-region": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", + "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/media-query": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", + "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", + "dependencies": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/react-env": "2.0.10" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/menu": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.1.tgz", + "integrity": "sha512-9fpCyV3vufLV5Rvv/oYC3LyCIkNqh0bEdYFVOLiqCZ6mt6NLFxL2jgE25nROYfDXQuBkY0qPC9IopYU198G4nw==", + "dependencies": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-outside-click": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/transition": "2.0.10" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/modal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.1.tgz", + "integrity": "sha512-+zfiUG/yZqUQ0wY7syoZg01cpBf54lbKUe7+ANEx558UQGbsI4bbcHSkY9l5lsprQ8teInvhjb6BekeCA0e7TA==", + "dependencies": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/focus-lock": "2.0.12", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.10", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.5.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/number-input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", + "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", + "dependencies": { + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-interval": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/number-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", + "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" + }, + "node_modules/@chakra-ui/object-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", + "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + }, + "node_modules/@chakra-ui/pin-input": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.14.tgz", + "integrity": "sha512-gFNlTUjU1xIuOErR/d/HrNNh1mS0erjNJSt5C6RU/My4lShzgCczmwnil7TuEx3k7lPqHKLEf/CGeCxBSUjaGA==", + "dependencies": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/popover": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", + "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", + "dependencies": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/popper": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", + "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", + "dependencies": { + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@popperjs/core": "^2.9.3" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/portal": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", + "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/progress": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.11.tgz", + "integrity": "sha512-2OwxGxI6W757QpDB6b++B4b2+t0oBgaQdHnd4/y35n3+mOFj++Wg7XpW4/iDHn+x3LkM+X3NIgdBWQFlmGx+6w==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/provider": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.19.tgz", + "integrity": "sha512-V+p0OePre0OgYmNxLbfiPWWbzaJ/EM2sfaRtD7E6ZA4TjUl2m4pWdC6OPMOiklu7EALfSgVk9X6Jh5pc+moH1g==", + "dependencies": { + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/system": "2.2.12", + "@chakra-ui/utils": "2.0.11" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/radio": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", + "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@zag-js/focus-visible": "0.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.5.tgz", + "integrity": "sha512-bQDRV23M3IvF0+AorTvqJmG/4T6KKQIb+1XGA2RyxonoSHVt89HbN3qnygHJw06Sdgpclxdbr/1qZ4o8+SMbpA==", + "dependencies": { + "@chakra-ui/accordion": "2.1.1", + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/avatar": "2.1.1", + "@chakra-ui/breadcrumb": "2.0.10", + "@chakra-ui/button": "2.0.11", + "@chakra-ui/checkbox": "2.2.1", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/control-box": "2.0.10", + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/editable": "2.0.12", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/hooks": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/image": "2.0.11", + "@chakra-ui/input": "2.0.11", + "@chakra-ui/layout": "2.1.8", + "@chakra-ui/live-region": "2.0.10", + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/menu": "2.1.1", + "@chakra-ui/modal": "2.2.1", + "@chakra-ui/number-input": "2.0.12", + "@chakra-ui/pin-input": "2.0.14", + "@chakra-ui/popover": "2.1.1", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/progress": "2.0.11", + "@chakra-ui/provider": "2.0.19", + "@chakra-ui/radio": "2.0.12", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/select": "2.0.12", + "@chakra-ui/skeleton": "2.0.17", + "@chakra-ui/slider": "2.0.12", + "@chakra-ui/spinner": "2.0.10", + "@chakra-ui/stat": "2.0.11", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/switch": "2.0.13", + "@chakra-ui/system": "2.2.12", + "@chakra-ui/table": "2.0.11", + "@chakra-ui/tabs": "2.1.3", + "@chakra-ui/tag": "2.0.11", + "@chakra-ui/textarea": "2.0.12", + "@chakra-ui/theme": "2.1.13", + "@chakra-ui/toast": "3.0.13", + "@chakra-ui/tooltip": "2.2.0", + "@chakra-ui/transition": "2.0.10", + "@chakra-ui/utils": "2.0.11", + "@chakra-ui/visually-hidden": "2.0.11" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/react-children-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.2.tgz", + "integrity": "sha512-mRTGAZ3DBXB3hgVwS2DVJe3Nlc0qGvMN0PAo4tD/3fj2op2IwspLcYPAWC5D/rI2xj2JlwE6szAtbvxdAfLCNw==" + }, + "node_modules/@chakra-ui/react-context": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", + "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-env": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", + "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", + "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-animation-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", + "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", + "dependencies": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-callback-ref": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", + "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-controllable-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", + "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-disclosure": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", + "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-event-listener": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", + "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-focus-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", + "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", + "dependencies": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-focus-on-pointer-down": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", + "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", + "dependencies": { + "@chakra-ui/react-use-event-listener": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-interval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", + "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-latest-ref": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", + "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-merge-refs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", + "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-outside-click": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", + "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-pan-event": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", + "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", + "dependencies": { + "@chakra-ui/event-utils": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "framesync": "5.3.0" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-previous": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", + "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-safe-layout-effect": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", + "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-size": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", + "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", + "dependencies": { + "@zag-js/element-size": "0.1.0" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-timeout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", + "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-update-effect": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", + "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-utils": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", + "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", + "dependencies": { + "@chakra-ui/utils": "2.0.11" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/select": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", + "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/shared-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", + "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" + }, + "node_modules/@chakra-ui/skeleton": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", + "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "dependencies": { + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/react-use-previous": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/slider": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", + "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "dependencies": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-pan-event": "2.0.5", + "@chakra-ui/react-use-size": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/spinner": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", + "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/stat": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", + "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", + "dependencies": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/styled-system": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", + "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", + "dependencies": { + "csstype": "^3.0.11", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/switch": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.13.tgz", + "integrity": "sha512-Ikj0L+SLLs/SnfGCiUChaldLIr/aizA1Q9D5+X6LtxpBnixFK/+fNXU+3juPDi9G1IFuNz2IAG51souO7C4nSQ==", + "dependencies": { + "@chakra-ui/checkbox": "2.2.1" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/system": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.2.12.tgz", + "integrity": "sha512-I7hFQswp8tG6ogjEMFs5TsCItdCYuNxpLAULgUrLdOlsQeNnHNQhlL4zpIfD+VzguhsNy5lisbegAMKjdghTYg==", + "dependencies": { + "@chakra-ui/color-mode": "2.1.9", + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/utils": "2.0.11", + "react-fast-compare": "3.2.0" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/table": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", + "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/tabs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.3.tgz", + "integrity": "sha512-9gUcj49LMt5QQnfJHR/ctr9VPttJ97CtQWuH2Irjb3RXkq1TRrz6wjythPImNQUv1/DYyXp2jsUhoEQc4Oz14Q==", + "dependencies": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/tag": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", + "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", + "dependencies": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/textarea": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", + "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/theme": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.13.tgz", + "integrity": "sha512-qbrrvn9JstyLFV2qyhwgnhwzVs4zSJ4PcS3ScL8kafXJazTRU6onbCcjEZ5mVCw6z8uEz3jcE8Y5KIhVzaB+Xw==", + "dependencies": { + "@chakra-ui/anatomy": "2.0.7", + "@chakra-ui/theme-tools": "2.0.12" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.0.0" + } + }, + "node_modules/@chakra-ui/theme-tools": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", + "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", + "dependencies": { + "@chakra-ui/anatomy": "2.0.7", + "@ctrl/tinycolor": "^3.4.0" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.0.0" + } + }, + "node_modules/@chakra-ui/toast": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-3.0.13.tgz", + "integrity": "sha512-5GADso5l5Tv1PAL1iocEneLs6U7I8HHMHSMvWdPFSmmJJh0XCH3fboh0C9LiFNIcnEGJmn+A5yGc4vjedA0h2A==", + "dependencies": { + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-use-timeout": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.13" + }, + "peerDependencies": { + "@chakra-ui/system": "2.2.12", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/tooltip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", + "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", + "dependencies": { + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/transition": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.10.tgz", + "integrity": "sha512-Tkkne8pIIY7f95TKt2aH+IAuQqzHmEt+ICPqvg74QbmIpKE5ptX0cd+P3swBANw4ACnJcCc2vWIaKmVBQ9clLw==", + "peerDependencies": { + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/utils": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", + "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", + "dependencies": { + "@types/lodash.mergewith": "4.6.6", + "css-box-model": "1.2.1", + "framesync": "5.3.0", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/visually-hidden": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", + "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", + "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", + "dependencies": { + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.1", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.1.3" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "dependencies": { + "@emotion/memoize": "^0.8.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "node_modules/@emotion/react": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", + "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/cache": "^11.10.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", + "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + }, + "node_modules/@emotion/styled": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", + "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@heroicons/react": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.13.tgz", + "integrity": "sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==", + "peerDependencies": { + "react": ">= 16" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@motionone/animation": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", + "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", + "dependencies": { + "@motionone/easing": "^10.14.0", + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/animation/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@motionone/dom": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", + "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", + "dependencies": { + "@motionone/animation": "^10.13.1", + "@motionone/generators": "^10.13.1", + "@motionone/types": "^10.13.0", + "@motionone/utils": "^10.13.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/dom/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@motionone/easing": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", + "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", + "dependencies": { + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/easing/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@motionone/generators": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", + "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", + "dependencies": { + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/generators/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@motionone/types": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", + "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" + }, + "node_modules/@motionone/utils": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", + "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", + "dependencies": { + "@motionone/types": "^10.14.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/utils/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@mswjs/cookies": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz", + "integrity": "sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==", + "dev": true, + "dependencies": { + "@types/set-cookie-parser": "^2.4.0", + "set-cookie-parser": "^2.4.6" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@mswjs/interceptors": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.6.tgz", + "integrity": "sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ==", + "dev": true, + "dependencies": { + "@open-draft/until": "^1.0.3", + "@types/debug": "^4.1.7", + "@xmldom/xmldom": "^0.8.3", + "debug": "^4.3.3", + "headers-polyfill": "^3.1.0", + "outvariant": "^1.2.1", + "strict-event-emitter": "^0.2.4", + "web-encoding": "^1.1.5" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nestjs/common": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", + "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", + "dev": true, + "dependencies": { + "axios": "0.26.1", + "iterare": "1.2.1", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "cache-manager": "*", + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "cache-manager": { + "optional": true + }, + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/common/node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/@nestjs/core": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", + "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "object-hash": "3.0.0", + "path-to-regexp": "3.2.0", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0", + "@nestjs/microservices": "^8.0.0", + "@nestjs/platform-express": "^8.0.0", + "@nestjs/websockets": "^8.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@nuxtjs/opencollective/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@open-draft/until": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", + "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", + "dev": true + }, + "node_modules/@openapitools/openapi-generator-cli": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", + "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nestjs/common": "8.4.4", + "@nestjs/core": "8.4.4", + "@nuxtjs/opencollective": "0.3.2", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.3", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.0.1", + "glob": "7.1.6", + "inquirer": "8.2.2", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.5.5", + "tslib": "2.0.3" + }, + "bin": { + "openapi-generator-cli": "main.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openapi_generator" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pkgr/utils/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@stomp/stompjs": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", + "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" + }, + "node_modules/@types/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/js-levenshtein": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz", + "integrity": "sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.188", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.188.tgz", + "integrity": "sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==" + }, + "node_modules/@types/lodash.mergewith": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz", + "integrity": "sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "devOptional": true + }, + "node_modules/@types/react": { + "version": "18.0.25", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz", + "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.8.tgz", + "integrity": "sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "devOptional": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/set-cookie-parser": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz", + "integrity": "sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", + "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz", + "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", + "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", + "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.42.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-0.1.2.tgz", + "integrity": "sha512-EdwCHnbkakR6YPupySZm1WoCDRPaw9c5jObAo2pCRv8Ja2TESFC6Sc8RUOcKuihfjARDfszbBf+YEQwHY9s9wg==", + "dev": true, + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0-beta.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", + "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-jsx": "^7.19.0", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.26.7", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^3.0.0" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.6.tgz", + "integrity": "sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@zag-js/element-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz", + "integrity": "sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==" + }, + "node_modules/@zag-js/focus-visible": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz", + "integrity": "sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==" + }, + "node_modules/@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "dev": true, + "optional": true + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-hidden": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz", + "integrity": "sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.9.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.1.tgz", + "integrity": "sha512-1exVbW0X1O/HSr/WMwnaweyqcWOgZgLiVxdLG34pvSQk4NlYQr9OUy0JLwuhFfuVNQzzqgH57eYzkFBCb3bIsQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", + "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compare-versions": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", + "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "dev": true + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", + "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "node_modules/console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "dev": true, + "dependencies": { + "easy-table": "1.1.0" + }, + "engines": { + "node": "> 0.10" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/core-js-pure": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", + "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "dev": true, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", + "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", + "dev": true, + "optionalDependencies": { + "wcwidth": ">=1.0.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", + "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", + "is-glob": "^4.0.3", + "synckit": "^0.8.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.31.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", + "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/focus-lock": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.3.tgz", + "integrity": "sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg==", + "dependencies": { + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/framer-motion": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.5.3.tgz", + "integrity": "sha512-VvANga9Z7bYtKMAsM/je81FwJDHfThOYywN04xVQ4OGdMVY09Bowx/q7nZd6XtytLuv6byc6GT1mYwag+SQ/nw==", + "dependencies": { + "@motionone/dom": "10.13.1", + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "popmotion": "11.0.5", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/framer-motion/node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "dependencies": { + "tslib": "2.4.0" + } + }, + "node_modules/framer-motion/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/framesync": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", + "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/framesync/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", + "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/headers-polyfill": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.1.2.tgz", + "integrity": "sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==", + "dev": true + }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/inquirer": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", + "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-node-process": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.0.1.tgz", + "integrity": "sha512-5IcdXuf++TTNt3oGl9EBdkvndXA8gmc4bz/Y+mdEpWh3Mcn/+kOw6hI7LD5CocqJWMzeb0I0ClndRVNdEPuJXQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/local-pkg": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.2.tgz", + "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/msw": { + "version": "0.47.4", + "resolved": "https://registry.npmjs.org/msw/-/msw-0.47.4.tgz", + "integrity": "sha512-Psftt8Yfl0+l+qqg9OlmKEsxF8S/vtda0CmlR6y8wTaWrMMzuCDa55n2hEGC0ZRDwuV6FFWc/4CjoDsBpATKBw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@mswjs/cookies": "^0.2.2", + "@mswjs/interceptors": "^0.17.5", + "@open-draft/until": "^1.0.3", + "@types/cookie": "^0.4.1", + "@types/js-levenshtein": "^1.1.1", + "chalk": "4.1.1", + "chokidar": "^3.4.2", + "cookie": "^0.4.2", + "graphql": "^15.0.0 || ^16.0.0", + "headers-polyfill": "^3.1.0", + "inquirer": "^8.2.0", + "is-node-process": "^1.0.1", + "js-levenshtein": "^1.1.6", + "node-fetch": "^2.6.7", + "outvariant": "^1.3.0", + "path-to-regexp": "^6.2.0", + "statuses": "^2.0.0", + "strict-event-emitter": "^0.2.6", + "type-fest": "^2.19.0", + "yargs": "^17.3.1" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.2.x <= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/msw/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/msw/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/msw/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/msw/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/msw/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/msw/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/msw/node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, + "node_modules/msw/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/msw/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/msw/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/msw/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/outvariant": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.3.0.tgz", + "integrity": "sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==", + "dev": true + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/popmotion": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", + "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", + "dependencies": { + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + } + }, + "node_modules/popmotion/node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "dependencies": { + "tslib": "2.4.0" + } + }, + "node_modules/popmotion/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/postcss": { + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-clientside-effect": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", + "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "dependencies": { + "@babel/runtime": "^7.12.13" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "node_modules/react-focus-lock": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", + "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.11.2", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.6", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-hook-form": { + "version": "7.39.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.39.1.tgz", + "integrity": "sha512-MiF9PCILN5KulhSGbnjohMiTOrB47GerDTichMNP0y2cPUu1GTRFqbunOxCE9N1499YTLMV/ne4gFzqCp1rxrQ==", + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", + "integrity": "sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==", + "dev": true, + "dependencies": { + "events": "^3.3.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz", + "integrity": "sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/style-value-types": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", + "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", + "dependencies": { + "hey-listen": "^1.0.8", + "tslib": "2.4.0" + } + }, + "node_modules/style-value-types/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/stylis": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", + "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", + "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/synckit/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/tinybench": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", + "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.0.tgz", + "integrity": "sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", + "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "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" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz", + "integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "0.24.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.24.5.tgz", + "integrity": "sha512-zw6JhPUHtLILQDe5Q39b/SzoITkG+R7hcFjuthp4xsi6zpmfQPOZcHodZ+3bqoWl4EdGK/p1fuMiEwdxgbGLOA==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.3", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "chai": "^4.3.6", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "strip-literal": "^0.4.2", + "tinybench": "^2.3.1", + "tinypool": "^0.3.0", + "tinyspy": "^1.0.2", + "vite": "^3.0.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "dev": true, + "dependencies": { + "util": "^0.12.3" + }, + "optionalDependencies": { + "@zxing/text-encoding": "0.9.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "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", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==" + }, + "@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", + "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", + "requires": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + }, + "@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==" + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "requires": { + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/runtime-corejs3": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz", + "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==", + "dev": true, + "requires": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@chakra-ui/accordion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.1.tgz", + "integrity": "sha512-5f4QBl/0EgU/9EVvzlj8ZU7SWwG6nUHCE9moGBCbgiIOVBEySxZ5Robsk6+T7sXmzQ41db04GcUE9NRKdalgIA==", + "requires": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.10" + } + }, + "@chakra-ui/alert": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", + "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + } + }, + "@chakra-ui/anatomy": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", + "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" + }, + "@chakra-ui/avatar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.1.1.tgz", + "integrity": "sha512-lTZPUq4Pefxgv3ndyJMxIHgFrXwdz2VZFCLF/aKcuGaUlB7TBYaCurQ7TNbME8j8VkJWNX+vKiVHPYvxsrITwQ==", + "requires": { + "@chakra-ui/image": "2.0.11", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/breadcrumb": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.0.10.tgz", + "integrity": "sha512-roKFA7nheq18eWNAdrHV6w8A9vZMSQTEEsbL6eU0lhUkolW9RlDjBl1bZvE7icFkNFXlJ33n8+0QAezLI+mMrQ==", + "requires": { + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/breakpoint-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", + "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + }, + "@chakra-ui/button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", + "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + } + }, + "@chakra-ui/checkbox": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.1.tgz", + "integrity": "sha512-soTeXEI+4UZSA4B4rRLpdh3cIW/gdhY6k0eXF4ZWExPb+dJ5Giv497S96vS4IGE7SJ7Ugw9kaWS+do2lSiPJew==", + "requires": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/visually-hidden": "2.0.11", + "@zag-js/focus-visible": "0.1.0" + } + }, + "@chakra-ui/clickable": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", + "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", + "requires": { + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/close-button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", + "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "requires": { + "@chakra-ui/icon": "3.0.11" + } + }, + "@chakra-ui/color-mode": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", + "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", + "requires": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/control-box": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", + "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", + "requires": {} + }, + "@chakra-ui/counter": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", + "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", + "requires": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/css-reset": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", + "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", + "requires": {} + }, + "@chakra-ui/descendant": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", + "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/dom-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", + "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" + }, + "@chakra-ui/editable": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.12.tgz", + "integrity": "sha512-37bDqm+j2JTN2XR443KRK9MmHHIQuS6fN+2TRuFgjfG8TomxxCJnhJ3GIfQSKh5Yjtnt4sXDmL4L0tyDpNrrrw==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/event-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", + "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" + }, + "@chakra-ui/focus-lock": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", + "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", + "requires": { + "@chakra-ui/dom-utils": "2.0.3", + "react-focus-lock": "^2.9.1" + } + }, + "@chakra-ui/form-control": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", + "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/hooks": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.0.11.tgz", + "integrity": "sha512-mYN4u9lbjDjEr/VucrVcLGg/sIO6gA9ZprcT3n9CBGSWt3xih7fCOJmE+yRcCNbL7335AMrv7a/M5Q30aRArcA==", + "requires": { + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/utils": "2.0.11", + "compute-scroll-into-view": "1.0.14", + "copy-to-clipboard": "3.3.1" + } + }, + "@chakra-ui/icon": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", + "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", + "requires": { + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/image": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", + "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", + "requires": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/input": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.11.tgz", + "integrity": "sha512-kaV0VCz6/yzoCKQnh/tMUVgh+Rp6EnM+WzJ37SVX1gDvErON2bmmVLU45BiRoWUcd50wOhDlpsNVUWP0sLlCDA==", + "requires": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/layout": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.8.tgz", + "integrity": "sha512-pcNUNgMh+e4wepNOlCg5iDrxGg4VFBpqZPmSHoP4TyPN2ddEnDRLoMLaREMoX7gEVyTsqEFOFg+wa3JZK32H4A==", + "requires": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/lazy-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", + "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" + }, + "@chakra-ui/live-region": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", + "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", + "requires": {} + }, + "@chakra-ui/media-query": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", + "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", + "requires": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/react-env": "2.0.10" + } + }, + "@chakra-ui/menu": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.1.tgz", + "integrity": "sha512-9fpCyV3vufLV5Rvv/oYC3LyCIkNqh0bEdYFVOLiqCZ6mt6NLFxL2jgE25nROYfDXQuBkY0qPC9IopYU198G4nw==", + "requires": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-outside-click": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/transition": "2.0.10" + } + }, + "@chakra-ui/modal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.1.tgz", + "integrity": "sha512-+zfiUG/yZqUQ0wY7syoZg01cpBf54lbKUe7+ANEx558UQGbsI4bbcHSkY9l5lsprQ8teInvhjb6BekeCA0e7TA==", + "requires": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/focus-lock": "2.0.12", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.10", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.5.4" + } + }, + "@chakra-ui/number-input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", + "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", + "requires": { + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-interval": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4" + } + }, + "@chakra-ui/number-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", + "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" + }, + "@chakra-ui/object-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", + "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + }, + "@chakra-ui/pin-input": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.14.tgz", + "integrity": "sha512-gFNlTUjU1xIuOErR/d/HrNNh1mS0erjNJSt5C6RU/My4lShzgCczmwnil7TuEx3k7lPqHKLEf/CGeCxBSUjaGA==", + "requires": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/popover": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", + "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", + "requires": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/popper": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", + "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", + "requires": { + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@popperjs/core": "^2.9.3" + } + }, + "@chakra-ui/portal": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", + "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/progress": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.11.tgz", + "integrity": "sha512-2OwxGxI6W757QpDB6b++B4b2+t0oBgaQdHnd4/y35n3+mOFj++Wg7XpW4/iDHn+x3LkM+X3NIgdBWQFlmGx+6w==", + "requires": { + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/provider": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.19.tgz", + "integrity": "sha512-V+p0OePre0OgYmNxLbfiPWWbzaJ/EM2sfaRtD7E6ZA4TjUl2m4pWdC6OPMOiklu7EALfSgVk9X6Jh5pc+moH1g==", + "requires": { + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/system": "2.2.12", + "@chakra-ui/utils": "2.0.11" + } + }, + "@chakra-ui/radio": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", + "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", + "requires": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@zag-js/focus-visible": "0.1.0" + } + }, + "@chakra-ui/react": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.5.tgz", + "integrity": "sha512-bQDRV23M3IvF0+AorTvqJmG/4T6KKQIb+1XGA2RyxonoSHVt89HbN3qnygHJw06Sdgpclxdbr/1qZ4o8+SMbpA==", + "requires": { + "@chakra-ui/accordion": "2.1.1", + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/avatar": "2.1.1", + "@chakra-ui/breadcrumb": "2.0.10", + "@chakra-ui/button": "2.0.11", + "@chakra-ui/checkbox": "2.2.1", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/control-box": "2.0.10", + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/editable": "2.0.12", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/hooks": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/image": "2.0.11", + "@chakra-ui/input": "2.0.11", + "@chakra-ui/layout": "2.1.8", + "@chakra-ui/live-region": "2.0.10", + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/menu": "2.1.1", + "@chakra-ui/modal": "2.2.1", + "@chakra-ui/number-input": "2.0.12", + "@chakra-ui/pin-input": "2.0.14", + "@chakra-ui/popover": "2.1.1", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/progress": "2.0.11", + "@chakra-ui/provider": "2.0.19", + "@chakra-ui/radio": "2.0.12", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/select": "2.0.12", + "@chakra-ui/skeleton": "2.0.17", + "@chakra-ui/slider": "2.0.12", + "@chakra-ui/spinner": "2.0.10", + "@chakra-ui/stat": "2.0.11", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/switch": "2.0.13", + "@chakra-ui/system": "2.2.12", + "@chakra-ui/table": "2.0.11", + "@chakra-ui/tabs": "2.1.3", + "@chakra-ui/tag": "2.0.11", + "@chakra-ui/textarea": "2.0.12", + "@chakra-ui/theme": "2.1.13", + "@chakra-ui/toast": "3.0.13", + "@chakra-ui/tooltip": "2.2.0", + "@chakra-ui/transition": "2.0.10", + "@chakra-ui/utils": "2.0.11", + "@chakra-ui/visually-hidden": "2.0.11" + } + }, + "@chakra-ui/react-children-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.2.tgz", + "integrity": "sha512-mRTGAZ3DBXB3hgVwS2DVJe3Nlc0qGvMN0PAo4tD/3fj2op2IwspLcYPAWC5D/rI2xj2JlwE6szAtbvxdAfLCNw==" + }, + "@chakra-ui/react-context": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", + "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "requires": {} + }, + "@chakra-ui/react-env": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", + "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", + "requires": {} + }, + "@chakra-ui/react-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", + "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", + "requires": {} + }, + "@chakra-ui/react-use-animation-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", + "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", + "requires": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4" + } + }, + "@chakra-ui/react-use-callback-ref": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", + "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "requires": {} + }, + "@chakra-ui/react-use-controllable-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", + "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-disclosure": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", + "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-event-listener": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", + "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-focus-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", + "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", + "requires": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + } + }, + "@chakra-ui/react-use-focus-on-pointer-down": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", + "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", + "requires": { + "@chakra-ui/react-use-event-listener": "2.0.4" + } + }, + "@chakra-ui/react-use-interval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", + "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-latest-ref": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", + "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", + "requires": {} + }, + "@chakra-ui/react-use-merge-refs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", + "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", + "requires": {} + }, + "@chakra-ui/react-use-outside-click": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", + "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-pan-event": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", + "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", + "requires": { + "@chakra-ui/event-utils": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "framesync": "5.3.0" + } + }, + "@chakra-ui/react-use-previous": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", + "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", + "requires": {} + }, + "@chakra-ui/react-use-safe-layout-effect": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", + "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", + "requires": {} + }, + "@chakra-ui/react-use-size": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", + "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", + "requires": { + "@zag-js/element-size": "0.1.0" + } + }, + "@chakra-ui/react-use-timeout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", + "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-update-effect": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", + "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", + "requires": {} + }, + "@chakra-ui/react-utils": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", + "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", + "requires": { + "@chakra-ui/utils": "2.0.11" + } + }, + "@chakra-ui/select": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", + "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "requires": { + "@chakra-ui/form-control": "2.0.11" + } + }, + "@chakra-ui/shared-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", + "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" + }, + "@chakra-ui/skeleton": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", + "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "requires": { + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/react-use-previous": "2.0.2" + } + }, + "@chakra-ui/slider": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", + "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "requires": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-pan-event": "2.0.5", + "@chakra-ui/react-use-size": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + } + }, + "@chakra-ui/spinner": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", + "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", + "requires": {} + }, + "@chakra-ui/stat": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", + "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/styled-system": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", + "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", + "requires": { + "csstype": "^3.0.11", + "lodash.mergewith": "4.6.2" + } + }, + "@chakra-ui/switch": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.13.tgz", + "integrity": "sha512-Ikj0L+SLLs/SnfGCiUChaldLIr/aizA1Q9D5+X6LtxpBnixFK/+fNXU+3juPDi9G1IFuNz2IAG51souO7C4nSQ==", + "requires": { + "@chakra-ui/checkbox": "2.2.1" + } + }, + "@chakra-ui/system": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.2.12.tgz", + "integrity": "sha512-I7hFQswp8tG6ogjEMFs5TsCItdCYuNxpLAULgUrLdOlsQeNnHNQhlL4zpIfD+VzguhsNy5lisbegAMKjdghTYg==", + "requires": { + "@chakra-ui/color-mode": "2.1.9", + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/utils": "2.0.11", + "react-fast-compare": "3.2.0" + } + }, + "@chakra-ui/table": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", + "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", + "requires": { + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/tabs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.3.tgz", + "integrity": "sha512-9gUcj49LMt5QQnfJHR/ctr9VPttJ97CtQWuH2Irjb3RXkq1TRrz6wjythPImNQUv1/DYyXp2jsUhoEQc4Oz14Q==", + "requires": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/tag": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", + "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/textarea": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", + "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "requires": { + "@chakra-ui/form-control": "2.0.11" + } + }, + "@chakra-ui/theme": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.13.tgz", + "integrity": "sha512-qbrrvn9JstyLFV2qyhwgnhwzVs4zSJ4PcS3ScL8kafXJazTRU6onbCcjEZ5mVCw6z8uEz3jcE8Y5KIhVzaB+Xw==", + "requires": { + "@chakra-ui/anatomy": "2.0.7", + "@chakra-ui/theme-tools": "2.0.12" + } + }, + "@chakra-ui/theme-tools": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", + "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", + "requires": { + "@chakra-ui/anatomy": "2.0.7", + "@ctrl/tinycolor": "^3.4.0" + } + }, + "@chakra-ui/toast": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-3.0.13.tgz", + "integrity": "sha512-5GADso5l5Tv1PAL1iocEneLs6U7I8HHMHSMvWdPFSmmJJh0XCH3fboh0C9LiFNIcnEGJmn+A5yGc4vjedA0h2A==", + "requires": { + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-use-timeout": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.13" + } + }, + "@chakra-ui/tooltip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", + "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", + "requires": { + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/transition": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.10.tgz", + "integrity": "sha512-Tkkne8pIIY7f95TKt2aH+IAuQqzHmEt+ICPqvg74QbmIpKE5ptX0cd+P3swBANw4ACnJcCc2vWIaKmVBQ9clLw==", + "requires": {} + }, + "@chakra-ui/utils": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", + "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", + "requires": { + "@types/lodash.mergewith": "4.6.6", + "css-box-model": "1.2.1", + "framesync": "5.3.0", + "lodash.mergewith": "4.6.2" + } + }, + "@chakra-ui/visually-hidden": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", + "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", + "requires": {} + }, + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" + } + }, + "@emotion/cache": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", + "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", + "requires": { + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.1", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.1.3" + } + }, + "@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "requires": { + "@emotion/memoize": "^0.8.0" + } + }, + "@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "@emotion/react": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", + "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/cache": "^11.10.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "requires": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "@emotion/sheet": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", + "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + }, + "@emotion/styled": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", + "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" + } + }, + "@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "requires": {} + }, + "@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + }, + "@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + }, + "@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@heroicons/react": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.13.tgz", + "integrity": "sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==", + "requires": {} + }, + "@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@motionone/animation": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", + "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", + "requires": { + "@motionone/easing": "^10.14.0", + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@motionone/dom": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", + "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", + "requires": { + "@motionone/animation": "^10.13.1", + "@motionone/generators": "^10.13.1", + "@motionone/types": "^10.13.0", + "@motionone/utils": "^10.13.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@motionone/easing": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", + "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", + "requires": { + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@motionone/generators": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", + "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", + "requires": { + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@motionone/types": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", + "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" + }, + "@motionone/utils": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", + "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", + "requires": { + "@motionone/types": "^10.14.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@mswjs/cookies": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz", + "integrity": "sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==", + "dev": true, + "requires": { + "@types/set-cookie-parser": "^2.4.0", + "set-cookie-parser": "^2.4.6" + } + }, + "@mswjs/interceptors": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.6.tgz", + "integrity": "sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ==", + "dev": true, + "requires": { + "@open-draft/until": "^1.0.3", + "@types/debug": "^4.1.7", + "@xmldom/xmldom": "^0.8.3", + "debug": "^4.3.3", + "headers-polyfill": "^3.1.0", + "outvariant": "^1.2.1", + "strict-event-emitter": "^0.2.4", + "web-encoding": "^1.1.5" + } + }, + "@nestjs/common": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", + "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", + "dev": true, + "requires": { + "axios": "0.26.1", + "iterare": "1.2.1", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "dependencies": { + "axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.8" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + } + } + }, + "@nestjs/core": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", + "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", + "dev": true, + "requires": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "object-hash": "3.0.0", + "path-to-regexp": "3.2.0", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@open-draft/until": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", + "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", + "dev": true + }, + "@openapitools/openapi-generator-cli": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", + "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", + "dev": true, + "requires": { + "@nestjs/common": "8.4.4", + "@nestjs/core": "8.4.4", + "@nuxtjs/opencollective": "0.3.2", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.3", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.0.1", + "glob": "7.1.6", + "inquirer": "8.2.2", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.5.5", + "tslib": "2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "@stomp/stompjs": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", + "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" + }, + "@types/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "dev": true + }, + "@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/js-levenshtein": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz", + "integrity": "sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/lodash": { + "version": "4.14.188", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.188.tgz", + "integrity": "sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==" + }, + "@types/lodash.mergewith": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz", + "integrity": "sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "devOptional": true + }, + "@types/react": { + "version": "18.0.25", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz", + "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==", + "devOptional": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.0.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.8.tgz", + "integrity": "sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "devOptional": true + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@types/set-cookie-parser": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz", + "integrity": "sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", + "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz", + "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", + "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", + "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.42.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vitejs/plugin-basic-ssl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-0.1.2.tgz", + "integrity": "sha512-EdwCHnbkakR6YPupySZm1WoCDRPaw9c5jObAo2pCRv8Ja2TESFC6Sc8RUOcKuihfjARDfszbBf+YEQwHY9s9wg==", + "dev": true, + "requires": {} + }, + "@vitejs/plugin-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", + "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "dev": true, + "requires": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-jsx": "^7.19.0", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.26.7", + "react-refresh": "^0.14.0" + } + }, + "@xmldom/xmldom": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.6.tgz", + "integrity": "sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==", + "dev": true + }, + "@zag-js/element-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz", + "integrity": "sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==" + }, + "@zag-js/focus-visible": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz", + "integrity": "sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==" + }, + "@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "dev": true, + "optional": true + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "aria-hidden": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz", + "integrity": "sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==", + "requires": { + "tslib": "^2.0.0" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "axe-core": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.1.tgz", + "integrity": "sha512-1exVbW0X1O/HSr/WMwnaweyqcWOgZgLiVxdLG34pvSQk4NlYQr9OUy0JLwuhFfuVNQzzqgH57eYzkFBCb3bIsQ==", + "dev": true + }, + "axios": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", + "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "caniuse-lite": { + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==" + }, + "chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "compare-versions": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", + "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "dev": true + }, + "compute-scroll-into-view": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", + "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "dev": true, + "requires": { + "easy-table": "1.1.0" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js-pure": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", + "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "requires": { + "tiny-invariant": "^1.0.6" + } + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "deep-eql": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", + "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", + "dev": true, + "requires": { + "wcwidth": ">=1.0.1" + } + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "esbuild": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" + } + }, + "esbuild-android-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "eslint": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-import-resolver-typescript": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", + "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", + "is-glob": "^4.0.3", + "synckit": "^0.8.4" + }, + "dependencies": { + "globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + } + }, + "eslint-plugin-react": { + "version": "7.31.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", + "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "focus-lock": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.3.tgz", + "integrity": "sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "framer-motion": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.5.3.tgz", + "integrity": "sha512-VvANga9Z7bYtKMAsM/je81FwJDHfThOYywN04xVQ4OGdMVY09Bowx/q7nZd6XtytLuv6byc6GT1mYwag+SQ/nw==", + "requires": { + "@emotion/is-prop-valid": "^0.8.2", + "@motionone/dom": "10.13.1", + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "popmotion": "11.0.5", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "requires": { + "tslib": "2.4.0" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "framesync": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", + "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-tsconfig": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", + "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "headers-polyfill": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.1.2.tgz", + "integrity": "sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==", + "dev": true + }, + "hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", + "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-node-process": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.0.1.tgz", + "integrity": "sha512-5IcdXuf++TTNt3oGl9EBdkvndXA8gmc4bz/Y+mdEpWh3Mcn/+kOw6hI7LD5CocqJWMzeb0I0ClndRVNdEPuJXQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "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-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "dev": true + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + } + }, + "language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "local-pkg": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.2.tgz", + "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "msw": { + "version": "0.47.4", + "resolved": "https://registry.npmjs.org/msw/-/msw-0.47.4.tgz", + "integrity": "sha512-Psftt8Yfl0+l+qqg9OlmKEsxF8S/vtda0CmlR6y8wTaWrMMzuCDa55n2hEGC0ZRDwuV6FFWc/4CjoDsBpATKBw==", + "dev": true, + "requires": { + "@mswjs/cookies": "^0.2.2", + "@mswjs/interceptors": "^0.17.5", + "@open-draft/until": "^1.0.3", + "@types/cookie": "^0.4.1", + "@types/js-levenshtein": "^1.1.1", + "chalk": "4.1.1", + "chokidar": "^3.4.2", + "cookie": "^0.4.2", + "graphql": "^15.0.0 || ^16.0.0", + "headers-polyfill": "^3.1.0", + "inquirer": "^8.2.0", + "is-node-process": "^1.0.1", + "js-levenshtein": "^1.1.6", + "node-fetch": "^2.6.7", + "outvariant": "^1.3.0", + "path-to-regexp": "^6.2.0", + "statuses": "^2.0.0", + "strict-event-emitter": "^0.2.6", + "type-fest": "^2.19.0", + "yargs": "^17.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "outvariant": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.3.0.tgz", + "integrity": "sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "popmotion": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", + "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", + "requires": { + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + }, + "dependencies": { + "framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "requires": { + "tslib": "2.4.0" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "postcss": { + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-clientside-effect": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", + "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "requires": { + "@babel/runtime": "^7.12.13" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "react-focus-lock": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", + "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", + "requires": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.11.2", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.6", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + }, + "react-hook-form": { + "version": "7.39.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.39.1.tgz", + "integrity": "sha512-MiF9PCILN5KulhSGbnjohMiTOrB47GerDTichMNP0y2cPUu1GTRFqbunOxCE9N1499YTLMV/ne4gFzqCp1rxrQ==", + "requires": {} + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true + }, + "react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "requires": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "requires": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + } + }, + "react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "requires": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "strict-event-emitter": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", + "integrity": "sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==", + "dev": true, + "requires": { + "events": "^3.3.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + } + } + }, + "string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + } + }, + "string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "strip-literal": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz", + "integrity": "sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==", + "dev": true, + "requires": { + "acorn": "^8.8.0" + } + }, + "style-value-types": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", + "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", + "requires": { + "hey-listen": "^1.0.8", + "tslib": "2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "stylis": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", + "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "synckit": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", + "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "dev": true, + "requires": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "tinybench": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", + "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", + "dev": true + }, + "tinypool": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.0.tgz", + "integrity": "sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==", + "dev": true + }, + "tinyspy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", + "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "requires": { + "tslib": "^2.0.0" + } + }, + "use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "requires": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vite": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz", + "integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==", + "dev": true, + "requires": { + "esbuild": "^0.15.9", + "fsevents": "~2.3.2", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + } + }, + "vitest": { + "version": "0.24.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.24.5.tgz", + "integrity": "sha512-zw6JhPUHtLILQDe5Q39b/SzoITkG+R7hcFjuthp4xsi6zpmfQPOZcHodZ+3bqoWl4EdGK/p1fuMiEwdxgbGLOA==", + "dev": true, + "requires": { + "@types/chai": "^4.3.3", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "chai": "^4.3.6", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "strip-literal": "^0.4.2", + "tinybench": "^2.3.1", + "tinypool": "^0.3.0", + "tinyspy": "^1.0.2", + "vite": "^3.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "dev": true, + "requires": { + "@zxing/text-encoding": "0.9.0", + "util": "^0.12.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "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" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/app/src/main/pointer/package.json b/app/src/main/pointer/package.json index ec40fb57..c69da402 100644 --- a/app/src/main/pointer/package.json +++ b/app/src/main/pointer/package.json @@ -8,7 +8,7 @@ "preview": "vite preview", "codegen": "openapi-generator-cli generate -g typescript-axios -i http://localhost:8080/v3/api-docs/Public%20API -o ./src/generated/http-client", "lint": "eslint src", - "format": "yarn check:format --write", + "format": "npm run check:format --write", "test": "vitest", "coverage": "vitest run --coverage", "code-check": "run-p lint check:*", diff --git a/app/src/main/pointer/yarn.lock b/app/src/main/pointer/yarn.lock deleted file mode 100644 index 8037f395..00000000 --- a/app/src/main/pointer/yarn.lock +++ /dev/null @@ -1,4794 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.19.3": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz" - integrity sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw== - -"@babel/core@^7.18.13": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz" - integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.3" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.3" - "@babel/types" "^7.19.3" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/generator@^7.19.3", "@babel/generator@^7.19.4": - version "7.19.5" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz" - integrity sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg== - dependencies: - "@babel/types" "^7.19.4" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-compilation-targets@^7.19.3": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz" - integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg== - dependencies: - "@babel/compat-data" "^7.19.3" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz" - integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz" - integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== - -"@babel/helper-simple-access@^7.18.6": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz" - integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== - dependencies: - "@babel/types" "^7.19.4" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helpers@^7.19.0": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz" - integrity sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.4" - "@babel/types" "^7.19.4" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.18.10", "@babel/parser@^7.19.3", "@babel/parser@^7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz" - integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== - -"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-development@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" - integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" - -"@babel/plugin-transform-react-jsx-self@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz" - integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-source@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz" - integrity sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx@^7.18.10", "@babel/plugin-transform-react-jsx@^7.18.6": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz" - integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.19.0" - -"@babel/runtime-corejs3@^7.10.2": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz" - integrity sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ== - dependencies: - core-js-pure "^3.25.1" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz" - integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz" - integrity sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.4" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.4" - "@babel/types" "^7.19.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz" - integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@chakra-ui/accordion@2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.1.tgz" - integrity sha512-5f4QBl/0EgU/9EVvzlj8ZU7SWwG6nUHCE9moGBCbgiIOVBEySxZ5Robsk6+T7sXmzQ41db04GcUE9NRKdalgIA== - dependencies: - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/transition" "2.0.10" - -"@chakra-ui/alert@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz" - integrity sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/spinner" "2.0.10" - -"@chakra-ui/anatomy@2.0.7": - version "2.0.7" - resolved "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz" - integrity sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg== - -"@chakra-ui/avatar@2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.1.1.tgz" - integrity sha512-lTZPUq4Pefxgv3ndyJMxIHgFrXwdz2VZFCLF/aKcuGaUlB7TBYaCurQ7TNbME8j8VkJWNX+vKiVHPYvxsrITwQ== - dependencies: - "@chakra-ui/image" "2.0.11" - "@chakra-ui/react-children-utils" "2.0.2" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/breadcrumb@2.0.10": - version "2.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.0.10.tgz" - integrity sha512-roKFA7nheq18eWNAdrHV6w8A9vZMSQTEEsbL6eU0lhUkolW9RlDjBl1bZvE7icFkNFXlJ33n8+0QAezLI+mMrQ== - dependencies: - "@chakra-ui/react-children-utils" "2.0.2" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/breakpoint-utils@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz" - integrity sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg== - -"@chakra-ui/button@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz" - integrity sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/spinner" "2.0.10" - -"@chakra-ui/checkbox@2.2.1": - version "2.2.1" - resolved "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.1.tgz" - integrity sha512-soTeXEI+4UZSA4B4rRLpdh3cIW/gdhY6k0eXF4ZWExPb+dJ5Giv497S96vS4IGE7SJ7Ugw9kaWS+do2lSiPJew== - dependencies: - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/visually-hidden" "2.0.11" - "@zag-js/focus-visible" "0.1.0" - -"@chakra-ui/clickable@2.0.10": - version "2.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz" - integrity sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw== - dependencies: - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/close-button@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz" - integrity sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw== - dependencies: - "@chakra-ui/icon" "3.0.11" - -"@chakra-ui/color-mode@2.1.9": - version "2.1.9" - resolved "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz" - integrity sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w== - dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/control-box@2.0.10": - version "2.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz" - integrity sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng== - -"@chakra-ui/counter@2.0.10": - version "2.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz" - integrity sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw== - dependencies: - "@chakra-ui/number-utils" "2.0.4" - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/css-reset@2.0.8": - version "2.0.8" - resolved "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz" - integrity sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg== - -"@chakra-ui/descendant@3.0.10": - version "3.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz" - integrity sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/dom-utils@2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz" - integrity sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA== - -"@chakra-ui/editable@2.0.12": - version "2.0.12" - resolved "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.12.tgz" - integrity sha512-37bDqm+j2JTN2XR443KRK9MmHHIQuS6fN+2TRuFgjfG8TomxxCJnhJ3GIfQSKh5Yjtnt4sXDmL4L0tyDpNrrrw== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/shared-utils" "2.0.2" - -"@chakra-ui/event-utils@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz" - integrity sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg== - -"@chakra-ui/focus-lock@2.0.12": - version "2.0.12" - resolved "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz" - integrity sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA== - dependencies: - "@chakra-ui/dom-utils" "2.0.3" - react-focus-lock "^2.9.1" - -"@chakra-ui/form-control@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz" - integrity sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/hooks@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.0.11.tgz" - integrity sha512-mYN4u9lbjDjEr/VucrVcLGg/sIO6gA9ZprcT3n9CBGSWt3xih7fCOJmE+yRcCNbL7335AMrv7a/M5Q30aRArcA== - dependencies: - "@chakra-ui/react-utils" "2.0.8" - "@chakra-ui/utils" "2.0.11" - compute-scroll-into-view "1.0.14" - copy-to-clipboard "3.3.1" - -"@chakra-ui/icon@3.0.11": - version "3.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz" - integrity sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw== - dependencies: - "@chakra-ui/shared-utils" "2.0.2" - -"@chakra-ui/image@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz" - integrity sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA== - dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/input@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.11.tgz" - integrity sha512-kaV0VCz6/yzoCKQnh/tMUVgh+Rp6EnM+WzJ37SVX1gDvErON2bmmVLU45BiRoWUcd50wOhDlpsNVUWP0sLlCDA== - dependencies: - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/object-utils" "2.0.4" - "@chakra-ui/react-children-utils" "2.0.2" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/shared-utils" "2.0.2" - -"@chakra-ui/layout@2.1.8": - version "2.1.8" - resolved "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.8.tgz" - integrity sha512-pcNUNgMh+e4wepNOlCg5iDrxGg4VFBpqZPmSHoP4TyPN2ddEnDRLoMLaREMoX7gEVyTsqEFOFg+wa3JZK32H4A== - dependencies: - "@chakra-ui/breakpoint-utils" "2.0.4" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/object-utils" "2.0.4" - "@chakra-ui/react-children-utils" "2.0.2" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/shared-utils" "2.0.2" - -"@chakra-ui/lazy-utils@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz" - integrity sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w== - -"@chakra-ui/live-region@2.0.10": - version "2.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz" - integrity sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg== - -"@chakra-ui/media-query@3.2.7": - version "3.2.7" - resolved "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz" - integrity sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw== - dependencies: - "@chakra-ui/breakpoint-utils" "2.0.4" - "@chakra-ui/react-env" "2.0.10" - -"@chakra-ui/menu@2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.1.tgz" - integrity sha512-9fpCyV3vufLV5Rvv/oYC3LyCIkNqh0bEdYFVOLiqCZ6mt6NLFxL2jgE25nROYfDXQuBkY0qPC9IopYU198G4nw== - dependencies: - "@chakra-ui/clickable" "2.0.10" - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/lazy-utils" "2.0.2" - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/react-children-utils" "2.0.2" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-animation-state" "2.0.5" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-disclosure" "2.0.5" - "@chakra-ui/react-use-focus-effect" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-outside-click" "2.0.4" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/transition" "2.0.10" - -"@chakra-ui/modal@2.2.1": - version "2.2.1" - resolved "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.1.tgz" - integrity sha512-+zfiUG/yZqUQ0wY7syoZg01cpBf54lbKUe7+ANEx558UQGbsI4bbcHSkY9l5lsprQ8teInvhjb6BekeCA0e7TA== - dependencies: - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/focus-lock" "2.0.12" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/transition" "2.0.10" - aria-hidden "^1.1.1" - react-remove-scroll "^2.5.4" - -"@chakra-ui/number-input@2.0.12": - version "2.0.12" - resolved "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz" - integrity sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA== - dependencies: - "@chakra-ui/counter" "2.0.10" - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-event-listener" "2.0.4" - "@chakra-ui/react-use-interval" "2.0.2" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - -"@chakra-ui/number-utils@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz" - integrity sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw== - -"@chakra-ui/object-utils@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz" - integrity sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ== - -"@chakra-ui/pin-input@2.0.14": - version "2.0.14" - resolved "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.14.tgz" - integrity sha512-gFNlTUjU1xIuOErR/d/HrNNh1mS0erjNJSt5C6RU/My4lShzgCczmwnil7TuEx3k7lPqHKLEf/CGeCxBSUjaGA== - dependencies: - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/react-children-utils" "2.0.2" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/popover@2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz" - integrity sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA== - dependencies: - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/lazy-utils" "2.0.2" - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-animation-state" "2.0.5" - "@chakra-ui/react-use-disclosure" "2.0.5" - "@chakra-ui/react-use-focus-effect" "2.0.5" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/popper@3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz" - integrity sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA== - dependencies: - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@popperjs/core" "^2.9.3" - -"@chakra-ui/portal@2.0.10": - version "2.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz" - integrity sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/progress@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.11.tgz" - integrity sha512-2OwxGxI6W757QpDB6b++B4b2+t0oBgaQdHnd4/y35n3+mOFj++Wg7XpW4/iDHn+x3LkM+X3NIgdBWQFlmGx+6w== - dependencies: - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/provider@2.0.19": - version "2.0.19" - resolved "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.19.tgz" - integrity sha512-V+p0OePre0OgYmNxLbfiPWWbzaJ/EM2sfaRtD7E6ZA4TjUl2m4pWdC6OPMOiklu7EALfSgVk9X6Jh5pc+moH1g== - dependencies: - "@chakra-ui/css-reset" "2.0.8" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-env" "2.0.10" - "@chakra-ui/system" "2.2.12" - "@chakra-ui/utils" "2.0.11" - -"@chakra-ui/radio@2.0.12": - version "2.0.12" - resolved "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz" - integrity sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA== - dependencies: - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@zag-js/focus-visible" "0.1.0" - -"@chakra-ui/react-children-utils@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.2.tgz" - integrity sha512-mRTGAZ3DBXB3hgVwS2DVJe3Nlc0qGvMN0PAo4tD/3fj2op2IwspLcYPAWC5D/rI2xj2JlwE6szAtbvxdAfLCNw== - -"@chakra-ui/react-context@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz" - integrity sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA== - -"@chakra-ui/react-env@2.0.10": - version "2.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz" - integrity sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA== - -"@chakra-ui/react-types@2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz" - integrity sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw== - -"@chakra-ui/react-use-animation-state@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz" - integrity sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A== - dependencies: - "@chakra-ui/dom-utils" "2.0.3" - "@chakra-ui/react-use-event-listener" "2.0.4" - -"@chakra-ui/react-use-callback-ref@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz" - integrity sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg== - -"@chakra-ui/react-use-controllable-state@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz" - integrity sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-disclosure@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz" - integrity sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-event-listener@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz" - integrity sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-focus-effect@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz" - integrity sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg== - dependencies: - "@chakra-ui/dom-utils" "2.0.3" - "@chakra-ui/react-use-event-listener" "2.0.4" - "@chakra-ui/react-use-update-effect" "2.0.4" - -"@chakra-ui/react-use-focus-on-pointer-down@2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz" - integrity sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ== - dependencies: - "@chakra-ui/react-use-event-listener" "2.0.4" - -"@chakra-ui/react-use-interval@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz" - integrity sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-latest-ref@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz" - integrity sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw== - -"@chakra-ui/react-use-merge-refs@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz" - integrity sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g== - -"@chakra-ui/react-use-outside-click@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz" - integrity sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-pan-event@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz" - integrity sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA== - dependencies: - "@chakra-ui/event-utils" "2.0.5" - "@chakra-ui/react-use-latest-ref" "2.0.2" - framesync "5.3.0" - -"@chakra-ui/react-use-previous@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz" - integrity sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w== - -"@chakra-ui/react-use-safe-layout-effect@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz" - integrity sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ== - -"@chakra-ui/react-use-size@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz" - integrity sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew== - dependencies: - "@zag-js/element-size" "0.1.0" - -"@chakra-ui/react-use-timeout@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz" - integrity sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-update-effect@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz" - integrity sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w== - -"@chakra-ui/react-utils@2.0.8": - version "2.0.8" - resolved "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz" - integrity sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ== - dependencies: - "@chakra-ui/utils" "2.0.11" - -"@chakra-ui/react@2.3.5": - version "2.3.5" - resolved "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.5.tgz" - integrity sha512-bQDRV23M3IvF0+AorTvqJmG/4T6KKQIb+1XGA2RyxonoSHVt89HbN3qnygHJw06Sdgpclxdbr/1qZ4o8+SMbpA== - dependencies: - "@chakra-ui/accordion" "2.1.1" - "@chakra-ui/alert" "2.0.11" - "@chakra-ui/avatar" "2.1.1" - "@chakra-ui/breadcrumb" "2.0.10" - "@chakra-ui/button" "2.0.11" - "@chakra-ui/checkbox" "2.2.1" - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/control-box" "2.0.10" - "@chakra-ui/counter" "2.0.10" - "@chakra-ui/css-reset" "2.0.8" - "@chakra-ui/editable" "2.0.12" - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/hooks" "2.0.11" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/image" "2.0.11" - "@chakra-ui/input" "2.0.11" - "@chakra-ui/layout" "2.1.8" - "@chakra-ui/live-region" "2.0.10" - "@chakra-ui/media-query" "3.2.7" - "@chakra-ui/menu" "2.1.1" - "@chakra-ui/modal" "2.2.1" - "@chakra-ui/number-input" "2.0.12" - "@chakra-ui/pin-input" "2.0.14" - "@chakra-ui/popover" "2.1.1" - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/progress" "2.0.11" - "@chakra-ui/provider" "2.0.19" - "@chakra-ui/radio" "2.0.12" - "@chakra-ui/react-env" "2.0.10" - "@chakra-ui/select" "2.0.12" - "@chakra-ui/skeleton" "2.0.17" - "@chakra-ui/slider" "2.0.12" - "@chakra-ui/spinner" "2.0.10" - "@chakra-ui/stat" "2.0.11" - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/switch" "2.0.13" - "@chakra-ui/system" "2.2.12" - "@chakra-ui/table" "2.0.11" - "@chakra-ui/tabs" "2.1.3" - "@chakra-ui/tag" "2.0.11" - "@chakra-ui/textarea" "2.0.12" - "@chakra-ui/theme" "2.1.13" - "@chakra-ui/toast" "3.0.13" - "@chakra-ui/tooltip" "2.2.0" - "@chakra-ui/transition" "2.0.10" - "@chakra-ui/utils" "2.0.11" - "@chakra-ui/visually-hidden" "2.0.11" - -"@chakra-ui/select@2.0.12": - version "2.0.12" - resolved "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz" - integrity sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA== - dependencies: - "@chakra-ui/form-control" "2.0.11" - -"@chakra-ui/shared-utils@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz" - integrity sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg== - -"@chakra-ui/skeleton@2.0.17": - version "2.0.17" - resolved "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz" - integrity sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg== - dependencies: - "@chakra-ui/media-query" "3.2.7" - "@chakra-ui/react-use-previous" "2.0.2" - -"@chakra-ui/slider@2.0.12": - version "2.0.12" - resolved "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz" - integrity sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw== - dependencies: - "@chakra-ui/number-utils" "2.0.4" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-latest-ref" "2.0.2" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-pan-event" "2.0.5" - "@chakra-ui/react-use-size" "2.0.4" - "@chakra-ui/react-use-update-effect" "2.0.4" - -"@chakra-ui/spinner@2.0.10": - version "2.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz" - integrity sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw== - -"@chakra-ui/stat@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz" - integrity sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/styled-system@2.3.4": - version "2.3.4" - resolved "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz" - integrity sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w== - dependencies: - csstype "^3.0.11" - lodash.mergewith "4.6.2" - -"@chakra-ui/switch@2.0.13": - version "2.0.13" - resolved "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.13.tgz" - integrity sha512-Ikj0L+SLLs/SnfGCiUChaldLIr/aizA1Q9D5+X6LtxpBnixFK/+fNXU+3juPDi9G1IFuNz2IAG51souO7C4nSQ== - dependencies: - "@chakra-ui/checkbox" "2.2.1" - -"@chakra-ui/system@2.2.12": - version "2.2.12" - resolved "https://registry.npmjs.org/@chakra-ui/system/-/system-2.2.12.tgz" - integrity sha512-I7hFQswp8tG6ogjEMFs5TsCItdCYuNxpLAULgUrLdOlsQeNnHNQhlL4zpIfD+VzguhsNy5lisbegAMKjdghTYg== - dependencies: - "@chakra-ui/color-mode" "2.1.9" - "@chakra-ui/react-utils" "2.0.8" - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/utils" "2.0.11" - react-fast-compare "3.2.0" - -"@chakra-ui/table@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz" - integrity sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg== - dependencies: - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/tabs@2.1.3": - version "2.1.3" - resolved "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.3.tgz" - integrity sha512-9gUcj49LMt5QQnfJHR/ctr9VPttJ97CtQWuH2Irjb3RXkq1TRrz6wjythPImNQUv1/DYyXp2jsUhoEQc4Oz14Q== - dependencies: - "@chakra-ui/clickable" "2.0.10" - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/lazy-utils" "2.0.2" - "@chakra-ui/react-children-utils" "2.0.2" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/tag@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz" - integrity sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/textarea@2.0.12": - version "2.0.12" - resolved "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz" - integrity sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A== - dependencies: - "@chakra-ui/form-control" "2.0.11" - -"@chakra-ui/theme-tools@2.0.12": - version "2.0.12" - resolved "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz" - integrity sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g== - dependencies: - "@chakra-ui/anatomy" "2.0.7" - "@ctrl/tinycolor" "^3.4.0" - -"@chakra-ui/theme@2.1.13": - version "2.1.13" - resolved "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.13.tgz" - integrity sha512-qbrrvn9JstyLFV2qyhwgnhwzVs4zSJ4PcS3ScL8kafXJazTRU6onbCcjEZ5mVCw6z8uEz3jcE8Y5KIhVzaB+Xw== - dependencies: - "@chakra-ui/anatomy" "2.0.7" - "@chakra-ui/theme-tools" "2.0.12" - -"@chakra-ui/toast@3.0.13": - version "3.0.13" - resolved "https://registry.npmjs.org/@chakra-ui/toast/-/toast-3.0.13.tgz" - integrity sha512-5GADso5l5Tv1PAL1iocEneLs6U7I8HHMHSMvWdPFSmmJJh0XCH3fboh0C9LiFNIcnEGJmn+A5yGc4vjedA0h2A== - dependencies: - "@chakra-ui/alert" "2.0.11" - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-use-timeout" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/theme" "2.1.13" - -"@chakra-ui/tooltip@2.2.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz" - integrity sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ== - dependencies: - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-disclosure" "2.0.5" - "@chakra-ui/react-use-event-listener" "2.0.4" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/transition@2.0.10": - version "2.0.10" - resolved "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.10.tgz" - integrity sha512-Tkkne8pIIY7f95TKt2aH+IAuQqzHmEt+ICPqvg74QbmIpKE5ptX0cd+P3swBANw4ACnJcCc2vWIaKmVBQ9clLw== - -"@chakra-ui/utils@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz" - integrity sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA== - dependencies: - "@types/lodash.mergewith" "4.6.6" - css-box-model "1.2.1" - framesync "5.3.0" - lodash.mergewith "4.6.2" - -"@chakra-ui/visually-hidden@2.0.11": - version "2.0.11" - resolved "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz" - integrity sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ== - -"@ctrl/tinycolor@^3.4.0": - version "3.4.1" - resolved "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz" - integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== - -"@emotion/babel-plugin@^11.10.0": - version "11.10.2" - resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz" - integrity sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/plugin-syntax-jsx" "^7.17.12" - "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.0" - "@emotion/memoize" "^0.8.0" - "@emotion/serialize" "^1.1.0" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.0.13" - -"@emotion/cache@^11.10.0": - version "11.10.3" - resolved "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz" - integrity sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ== - dependencies: - "@emotion/memoize" "^0.8.0" - "@emotion/sheet" "^1.2.0" - "@emotion/utils" "^1.2.0" - "@emotion/weak-memoize" "^0.3.0" - stylis "4.0.13" - -"@emotion/hash@^0.9.0": - version "0.9.0" - resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz" - integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== - -"@emotion/is-prop-valid@^0.8.2": - version "0.8.8" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - dependencies: - "@emotion/memoize" "0.7.4" - -"@emotion/is-prop-valid@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz" - integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== - dependencies: - "@emotion/memoize" "^0.8.0" - -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - -"@emotion/memoize@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz" - integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== - -"@emotion/react@11.10.4": - version "11.10.4" - resolved "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz" - integrity sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.0" - "@emotion/cache" "^11.10.0" - "@emotion/serialize" "^1.1.0" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@emotion/utils" "^1.2.0" - "@emotion/weak-memoize" "^0.3.0" - hoist-non-react-statics "^3.3.1" - -"@emotion/serialize@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz" - integrity sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA== - dependencies: - "@emotion/hash" "^0.9.0" - "@emotion/memoize" "^0.8.0" - "@emotion/unitless" "^0.8.0" - "@emotion/utils" "^1.2.0" - csstype "^3.0.2" - -"@emotion/sheet@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz" - integrity sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w== - -"@emotion/styled@11.10.4": - version "11.10.4" - resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz" - integrity sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.0" - "@emotion/is-prop-valid" "^1.2.0" - "@emotion/serialize" "^1.1.0" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@emotion/utils" "^1.2.0" - -"@emotion/unitless@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz" - integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== - -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz" - integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== - -"@emotion/utils@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz" - integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== - -"@emotion/weak-memoize@^0.3.0": - version "0.3.0" - resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz" - integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== - -"@esbuild/android-arm@0.15.11": - version "0.15.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.11.tgz#bdd9c3e098183bdca97075aa4c3e0152ed3e10ee" - integrity sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA== - -"@esbuild/linux-loong64@0.15.11": - version "0.15.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.11.tgz#2f4f9a1083dcb4fc65233b6f59003c406abf32e5" - integrity sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw== - -"@eslint/eslintrc@^1.3.3": - version "1.3.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz" - integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.4.0" - globals "^13.15.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@heroicons/react@^2.0.12": - version "2.0.12" - resolved "https://registry.npmjs.org/@heroicons/react/-/react-2.0.12.tgz" - integrity sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg== - -"@humanwhocodes/config-array@^0.10.5": - version "0.10.7" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz" - integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@motionone/animation@^10.13.1": - version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz" - integrity sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ== - dependencies: - "@motionone/easing" "^10.14.0" - "@motionone/types" "^10.14.0" - "@motionone/utils" "^10.14.0" - tslib "^2.3.1" - -"@motionone/dom@10.13.1": - version "10.13.1" - resolved "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz" - integrity sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ== - dependencies: - "@motionone/animation" "^10.13.1" - "@motionone/generators" "^10.13.1" - "@motionone/types" "^10.13.0" - "@motionone/utils" "^10.13.1" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@motionone/easing@^10.14.0": - version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz" - integrity sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA== - dependencies: - "@motionone/utils" "^10.14.0" - tslib "^2.3.1" - -"@motionone/generators@^10.13.1": - version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz" - integrity sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg== - dependencies: - "@motionone/types" "^10.14.0" - "@motionone/utils" "^10.14.0" - tslib "^2.3.1" - -"@motionone/types@^10.13.0", "@motionone/types@^10.14.0": - version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz" - integrity sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ== - -"@motionone/utils@^10.13.1", "@motionone/utils@^10.14.0": - version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz" - integrity sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw== - dependencies: - "@motionone/types" "^10.14.0" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@mswjs/cookies@^0.2.2": - version "0.2.2" - resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz" - integrity sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g== - dependencies: - "@types/set-cookie-parser" "^2.4.0" - set-cookie-parser "^2.4.6" - -"@mswjs/interceptors@^0.17.5": - version "0.17.6" - resolved "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.6.tgz" - integrity sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ== - dependencies: - "@open-draft/until" "^1.0.3" - "@types/debug" "^4.1.7" - "@xmldom/xmldom" "^0.8.3" - debug "^4.3.3" - headers-polyfill "^3.1.0" - outvariant "^1.2.1" - strict-event-emitter "^0.2.4" - web-encoding "^1.1.5" - -"@nestjs/common@8.4.4": - version "8.4.4" - resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-8.4.4.tgz#0914c6c0540b5a344c7c8fd6072faa1a49af1158" - integrity sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q== - dependencies: - axios "0.26.1" - iterare "1.2.1" - tslib "2.3.1" - uuid "8.3.2" - -"@nestjs/core@8.4.4": - version "8.4.4" - resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-8.4.4.tgz#94fd2d63fd77791f616fbecafb79faa2235eeeff" - integrity sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg== - dependencies: - "@nuxtjs/opencollective" "0.3.2" - fast-safe-stringify "2.1.1" - iterare "1.2.1" - object-hash "3.0.0" - path-to-regexp "3.2.0" - tslib "2.3.1" - uuid "8.3.2" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nuxtjs/opencollective@0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz#620ce1044f7ac77185e825e1936115bb38e2681c" - integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== - dependencies: - chalk "^4.1.0" - consola "^2.15.0" - node-fetch "^2.6.1" - -"@open-draft/until@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz" - integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== - -"@openapitools/openapi-generator-cli@^2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz#727a0f29fec1f91ffb467003d0d12ef35554e0ef" - integrity sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw== - dependencies: - "@nestjs/common" "8.4.4" - "@nestjs/core" "8.4.4" - "@nuxtjs/opencollective" "0.3.2" - chalk "4.1.2" - commander "8.3.0" - compare-versions "4.1.3" - concurrently "6.5.1" - console.table "0.10.0" - fs-extra "10.0.1" - glob "7.1.6" - inquirer "8.2.2" - lodash "4.17.21" - reflect-metadata "0.1.13" - rxjs "7.5.5" - tslib "2.0.3" - -"@pkgr/utils@^2.3.1": - version "2.3.1" - resolved "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz" - integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw== - dependencies: - cross-spawn "^7.0.3" - is-glob "^4.0.3" - open "^8.4.0" - picocolors "^1.0.0" - tiny-glob "^0.2.9" - tslib "^2.4.0" - -"@popperjs/core@^2.9.3": - version "2.11.6" - resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz" - integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== - -"@stomp/stompjs@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@stomp/stompjs/-/stompjs-6.1.2.tgz#4ac3c380e8d1de1da94a3623d404e67de69dd01e" - integrity sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ== - -"@types/chai-subset@^1.3.3": - version "1.3.3" - resolved "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz" - integrity sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw== - dependencies: - "@types/chai" "*" - -"@types/chai@*", "@types/chai@^4.3.3": - version "4.3.3" - resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz" - integrity sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g== - -"@types/cookie@^0.4.1": - version "0.4.1" - resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz" - integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== - -"@types/debug@^4.1.7": - version "4.1.7" - resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" - integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== - dependencies: - "@types/ms" "*" - -"@types/js-levenshtein@^1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz" - integrity sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g== - -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/lodash.mergewith@4.6.6": - version "4.6.6" - resolved "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz" - integrity sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*": - version "4.14.186" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz" - integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw== - -"@types/ms@*": - version "0.7.31" - resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" - integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== - -"@types/node@*": - version "18.11.0" - resolved "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz" - integrity sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prop-types@*": - version "15.7.5" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== - -"@types/react-dom@^18.0.6": - version "18.0.6" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz" - integrity sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@^18.0.17": - version "18.0.21" - resolved "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz" - integrity sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/set-cookie-parser@^2.4.0": - version "2.4.2" - resolved "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz" - integrity sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^5.40.0": - version "5.40.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.0.tgz" - integrity sha512-FIBZgS3DVJgqPwJzvZTuH4HNsZhHMa9SjxTKAZTlMsPw/UzpEjcf9f4dfgDJEHjK+HboUJo123Eshl6niwEm/Q== - dependencies: - "@typescript-eslint/scope-manager" "5.40.0" - "@typescript-eslint/type-utils" "5.40.0" - "@typescript-eslint/utils" "5.40.0" - debug "^4.3.4" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.40.0": - version "5.40.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.40.0.tgz" - integrity sha512-Ah5gqyX2ySkiuYeOIDg7ap51/b63QgWZA7w6AHtFrag7aH0lRQPbLzUjk0c9o5/KZ6JRkTTDKShL4AUrQa6/hw== - dependencies: - "@typescript-eslint/scope-manager" "5.40.0" - "@typescript-eslint/types" "5.40.0" - "@typescript-eslint/typescript-estree" "5.40.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.40.0": - version "5.40.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.0.tgz" - integrity sha512-d3nPmjUeZtEWRvyReMI4I1MwPGC63E8pDoHy0BnrYjnJgilBD3hv7XOiETKLY/zTwI7kCnBDf2vWTRUVpYw0Uw== - dependencies: - "@typescript-eslint/types" "5.40.0" - "@typescript-eslint/visitor-keys" "5.40.0" - -"@typescript-eslint/type-utils@5.40.0": - version "5.40.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.0.tgz" - integrity sha512-nfuSdKEZY2TpnPz5covjJqav+g5qeBqwSHKBvz7Vm1SAfy93SwKk/JeSTymruDGItTwNijSsno5LhOHRS1pcfw== - dependencies: - "@typescript-eslint/typescript-estree" "5.40.0" - "@typescript-eslint/utils" "5.40.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.40.0": - version "5.40.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.0.tgz" - integrity sha512-V1KdQRTXsYpf1Y1fXCeZ+uhjW48Niiw0VGt4V8yzuaDTU8Z1Xl7yQDyQNqyAFcVhpYXIVCEuxSIWTsLDpHgTbw== - -"@typescript-eslint/typescript-estree@5.40.0": - version "5.40.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.0.tgz" - integrity sha512-b0GYlDj8TLTOqwX7EGbw2gL5EXS2CPEWhF9nGJiGmEcmlpNBjyHsTwbqpyIEPVpl6br4UcBOYlcI2FJVtJkYhg== - dependencies: - "@typescript-eslint/types" "5.40.0" - "@typescript-eslint/visitor-keys" "5.40.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.40.0": - version "5.40.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.0.tgz" - integrity sha512-MO0y3T5BQ5+tkkuYZJBjePewsY+cQnfkYeRqS6tPh28niiIwPnQ1t59CSRcs1ZwJJNOdWw7rv9pF8aP58IMihA== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.40.0" - "@typescript-eslint/types" "5.40.0" - "@typescript-eslint/typescript-estree" "5.40.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.40.0": - version "5.40.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.0.tgz" - integrity sha512-ijJ+6yig+x9XplEpG2K6FUdJeQGGj/15U3S56W9IqXKJqleuD7zJ2AX/miLezwxpd7ZxDAqO87zWufKg+RPZyQ== - dependencies: - "@typescript-eslint/types" "5.40.0" - eslint-visitor-keys "^3.3.0" - -"@vitejs/plugin-basic-ssl@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-0.1.2.tgz#7177f9adc5384f1377b9b91b17ce7cdb8f422abd" - integrity sha512-EdwCHnbkakR6YPupySZm1WoCDRPaw9c5jObAo2pCRv8Ja2TESFC6Sc8RUOcKuihfjARDfszbBf+YEQwHY9s9wg== - -"@vitejs/plugin-react@^2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.1.0.tgz" - integrity sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA== - dependencies: - "@babel/core" "^7.18.13" - "@babel/plugin-transform-react-jsx" "^7.18.10" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-jsx-self" "^7.18.6" - "@babel/plugin-transform-react-jsx-source" "^7.18.6" - magic-string "^0.26.2" - react-refresh "^0.14.0" - -"@xmldom/xmldom@^0.8.3": - version "0.8.3" - resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.3.tgz" - integrity sha512-Lv2vySXypg4nfa51LY1nU8yDAGo/5YwF+EY/rUZgIbfvwVARcd67ttCM8SMsTeJy51YhHYavEq+FS6R0hW9PFQ== - -"@zag-js/element-size@0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz" - integrity sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ== - -"@zag-js/focus-visible@0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz" - integrity sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg== - -"@zxing/text-encoding@0.9.0": - version "0.9.0" - resolved "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz" - integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.8.0: - version "8.8.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-hidden@^1.1.1: - version "1.2.1" - resolved "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz" - integrity sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A== - dependencies: - tslib "^2.0.0" - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -array-includes@^3.1.4, array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" - integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -axe-core@^4.4.3: - version "4.4.3" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz" - integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== - -axios@0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" - integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== - dependencies: - follow-redirects "^1.14.8" - -axios@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" - integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.21.3: - version "4.21.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -caniuse-lite@^1.0.30001400: - version "1.0.30001420" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz" - integrity sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A== - -chai@^4.3.6: - version "4.3.6" - resolved "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz" - integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^3.0.1" - get-func-name "^2.0.0" - loupe "^2.3.1" - pathval "^1.1.1" - type-detect "^4.0.5" - -chalk@4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^2.0.0, chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" - integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== - -chokidar@^3.4.2: - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -compare-versions@4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-4.1.3.tgz#8f7b8966aef7dc4282b45dfa6be98434fc18a1a4" - integrity sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg== - -compute-scroll-into-view@1.0.14: - version "1.0.14" - resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz" - integrity sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concurrently@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-6.5.1.tgz#4518c67f7ac680cf5c34d5adf399a2a2047edc8c" - integrity sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag== - dependencies: - chalk "^4.1.0" - date-fns "^2.16.1" - lodash "^4.17.21" - rxjs "^6.6.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" - tree-kill "^1.2.2" - yargs "^16.2.0" - -consola@^2.15.0: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -console.table@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/console.table/-/console.table-0.10.0.tgz#0917025588875befd70cf2eff4bef2c6e2d75d04" - integrity sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g== - dependencies: - easy-table "1.1.0" - -convert-source-map@^1.5.0, convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -cookie@^0.4.2: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -copy-to-clipboard@3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== - dependencies: - toggle-selection "^1.0.6" - -core-js-pure@^3.25.1: - version "3.25.5" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz" - integrity sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg== - -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-box-model@1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz" - integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== - dependencies: - tiny-invariant "^1.0.6" - -csstype@^3.0.11, csstype@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== - -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -date-fns@^2.16.1: - version "2.29.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" - integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== - -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== - dependencies: - type-detect "^4.0.0" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -easy-table@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/easy-table/-/easy-table-1.1.0.tgz#86f9ab4c102f0371b7297b92a651d5824bc8cb73" - integrity sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA== - optionalDependencies: - wcwidth ">=1.0.1" - -electron-to-chromium@^1.4.251: - version "1.4.283" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.283.tgz" - integrity sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -enhanced-resolve@^5.10.0: - version "5.10.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0: - version "1.20.4" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz" - integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.2" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -esbuild-android-64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.11.tgz#50402129c3e85bb06434e212374c5f693e4c5f01" - integrity sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw== - -esbuild-android-arm64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.11.tgz#49bee35218ea2ccf1a0c5f187af77c1c0a5dee71" - integrity sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ== - -esbuild-darwin-64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.11.tgz#89a90c8cf6f0029ac4169bfedd012a0412c1575f" - integrity sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA== - -esbuild-darwin-arm64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.11.tgz#556f4385c6de806cc81132dd7b8af00fe9d292df" - integrity sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ== - -esbuild-freebsd-64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.11.tgz#fd86fd1b3b65366048f35b996d9cdf3547384eee" - integrity sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg== - -esbuild-freebsd-arm64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.11.tgz#d346bcacfe9779ebc1a11edac1bdedeff6dda3b1" - integrity sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ== - -esbuild-linux-32@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.11.tgz#64b50e774bf75af7dcc6a73ad509f2eb0ac4487b" - integrity sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA== - -esbuild-linux-64@0.15.11: - version "0.15.11" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.11.tgz" - integrity sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA== - -esbuild-linux-arm64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.11.tgz#c0cb31980eee066bfd39a4593660a0ecebe926cb" - integrity sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw== - -esbuild-linux-arm@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.11.tgz#7824d20099977aa671016c7de7a5038c9870010f" - integrity sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A== - -esbuild-linux-mips64le@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.11.tgz#10627331c90164e553429ed25e025184bba485b6" - integrity sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA== - -esbuild-linux-ppc64le@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.11.tgz#be42679a36a5246b893fc8b898135ebacb5a0a14" - integrity sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg== - -esbuild-linux-riscv64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.11.tgz#3ac2f328e3db73cbff833ada94314d8e79503e54" - integrity sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw== - -esbuild-linux-s390x@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.11.tgz#e774e0df061b6847d86783bf3c8c4300a72e03ad" - integrity sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg== - -esbuild-netbsd-64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.11.tgz#55e265fa4489e3f396b16c81f6f5a11d6ca2a9a4" - integrity sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A== - -esbuild-openbsd-64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.11.tgz#bc04103ccfd8c2f2241e1add0b51a095955b73c4" - integrity sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ== - -esbuild-sunos-64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.11.tgz#ccd580305d31fde07b5c386da79c942aaf069013" - integrity sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw== - -esbuild-windows-32@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.11.tgz#40fe1d48f9b20a76f6db5109aaaf1511aed58c71" - integrity sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q== - -esbuild-windows-64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.11.tgz#80c58b1ef2ff030c78e3a06e7a922776cc4cb687" - integrity sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ== - -esbuild-windows-arm64@0.15.11: - version "0.15.11" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.11.tgz#018624023b5c3f0cca334cc99f5ef7134d396333" - integrity sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw== - -esbuild@^0.15.9: - version "0.15.11" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.15.11.tgz" - integrity sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg== - optionalDependencies: - "@esbuild/android-arm" "0.15.11" - "@esbuild/linux-loong64" "0.15.11" - esbuild-android-64 "0.15.11" - esbuild-android-arm64 "0.15.11" - esbuild-darwin-64 "0.15.11" - esbuild-darwin-arm64 "0.15.11" - esbuild-freebsd-64 "0.15.11" - esbuild-freebsd-arm64 "0.15.11" - esbuild-linux-32 "0.15.11" - esbuild-linux-64 "0.15.11" - esbuild-linux-arm "0.15.11" - esbuild-linux-arm64 "0.15.11" - esbuild-linux-mips64le "0.15.11" - esbuild-linux-ppc64le "0.15.11" - esbuild-linux-riscv64 "0.15.11" - esbuild-linux-s390x "0.15.11" - esbuild-netbsd-64 "0.15.11" - esbuild-openbsd-64 "0.15.11" - esbuild-sunos-64 "0.15.11" - esbuild-windows-32 "0.15.11" - esbuild-windows-64 "0.15.11" - esbuild-windows-arm64 "0.15.11" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-import-resolver-typescript@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.1.tgz#c72634da072eebd04fe73007fa58a62c333c8147" - integrity sha512-U7LUjNJPYjNsHvAUAkt/RU3fcTSpbllA0//35B4eLYTX74frmOepbt7F7J3D1IGtj9k21buOpaqtDd4ZlS/BYQ== - dependencies: - debug "^4.3.4" - enhanced-resolve "^5.10.0" - get-tsconfig "^4.2.0" - globby "^13.1.2" - is-core-module "^2.10.0" - is-glob "^4.0.3" - synckit "^0.8.3" - -eslint-module-utils@^2.7.3: - version "2.7.4" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" - integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== - dependencies: - debug "^3.2.7" - -eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-jsx-a11y@^6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" - integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== - dependencies: - "@babel/runtime" "^7.18.9" - aria-query "^4.2.2" - array-includes "^3.1.5" - ast-types-flow "^0.0.7" - axe-core "^4.4.3" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.2" - language-tags "^1.0.5" - minimatch "^3.1.2" - semver "^6.3.0" - -eslint-plugin-react-hooks@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react@^7.31.10: - version "7.31.10" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz#6782c2c7fe91c09e715d536067644bbb9491419a" - integrity sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA== - dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.7" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^8.25.0: - version "8.25.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz" - integrity sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A== - dependencies: - "@eslint/eslintrc" "^1.3.3" - "@humanwhocodes/config-array" "^0.10.5" - "@humanwhocodes/module-importer" "^1.0.1" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.1" - globals "^13.15.0" - globby "^11.1.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-sdsl "^4.1.4" - 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.0" - text-table "^0.2.0" - -espree@^9.4.0: - version "9.4.0" - resolved "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz" - integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -events@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.11, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -focus-lock@^0.11.2: - version "0.11.3" - resolved "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.3.tgz" - integrity sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg== - dependencies: - tslib "^2.0.3" - -follow-redirects@^1.14.8, follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -framer-motion@7.5.3: - version "7.5.3" - resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-7.5.3.tgz" - integrity sha512-VvANga9Z7bYtKMAsM/je81FwJDHfThOYywN04xVQ4OGdMVY09Bowx/q7nZd6XtytLuv6byc6GT1mYwag+SQ/nw== - dependencies: - "@motionone/dom" "10.13.1" - framesync "6.1.2" - hey-listen "^1.0.8" - popmotion "11.0.5" - style-value-types "5.1.2" - tslib "2.4.0" - optionalDependencies: - "@emotion/is-prop-valid" "^0.8.2" - -framesync@5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz" - integrity sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA== - dependencies: - tslib "^2.1.0" - -framesync@6.1.2: - version "6.1.2" - resolved "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz" - integrity sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g== - dependencies: - tslib "2.4.0" - -fs-extra@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" - integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" - integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-nonce@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz" - integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-tsconfig@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz" - integrity sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== - dependencies: - type-fest "^0.20.2" - -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globby@^13.1.2: - version "13.1.2" - resolved "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz" - integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.2.11" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^4.0.0" - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -"graphql@^15.0.0 || ^16.0.0": - version "16.6.0" - resolved "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz" - integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -headers-polyfill@^3.1.0: - version "3.1.2" - resolved "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.1.2.tgz" - integrity sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA== - -hey-listen@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz" - integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== - -hoist-non-react-statics@^3.3.1: - version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inquirer@8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.2.tgz#1310517a87a0814d25336c78a20b44c3d9b7629d" - integrity sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -inquirer@^8.2.0: - version "8.2.4" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz" - integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^7.0.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.10.0, is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-node-process@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-node-process/-/is-node-process-1.0.1.tgz" - integrity sha512-5IcdXuf++TTNt3oGl9EBdkvndXA8gmc4bz/Y+mdEpWh3Mcn/+kOw6hI7LD5CocqJWMzeb0I0ClndRVNdEPuJXQ== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.3, is-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz" - integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.20.0" - for-each "^0.3.3" - has-tostringtag "^1.0.0" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -iterare@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" - integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== - -js-levenshtein@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - -js-sdsl@^4.1.4: - version "4.1.5" - resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz" - integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: - version "3.3.3" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" - -language-subtag-registry@~0.3.2: - version "0.3.22" - resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== - dependencies: - language-subtag-registry "~0.3.2" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -local-pkg@^0.4.2: - version "0.4.2" - resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.2.tgz" - integrity sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg== - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.mergewith@4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" - integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== - -lodash@4.17.21, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loupe@^2.3.1: - version "2.3.4" - resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz" - integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== - dependencies: - get-func-name "^2.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.26.2: - version "0.26.7" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz" - integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== - dependencies: - sourcemap-codec "^1.4.8" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" - integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -msw@^0.47.4: - version "0.47.4" - resolved "https://registry.npmjs.org/msw/-/msw-0.47.4.tgz" - integrity sha512-Psftt8Yfl0+l+qqg9OlmKEsxF8S/vtda0CmlR6y8wTaWrMMzuCDa55n2hEGC0ZRDwuV6FFWc/4CjoDsBpATKBw== - dependencies: - "@mswjs/cookies" "^0.2.2" - "@mswjs/interceptors" "^0.17.5" - "@open-draft/until" "^1.0.3" - "@types/cookie" "^0.4.1" - "@types/js-levenshtein" "^1.1.1" - chalk "4.1.1" - chokidar "^3.4.2" - cookie "^0.4.2" - graphql "^15.0.0 || ^16.0.0" - headers-polyfill "^3.1.0" - inquirer "^8.2.0" - is-node-process "^1.0.1" - js-levenshtein "^1.1.6" - node-fetch "^2.6.7" - outvariant "^1.3.0" - path-to-regexp "^6.2.0" - statuses "^2.0.0" - strict-event-emitter "^0.2.6" - type-fest "^2.19.0" - yargs "^17.3.1" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-all@^4.1.5: - version "4.1.5" - resolved "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz" - integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== - dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - cross-spawn "^6.0.5" - memorystream "^0.3.1" - minimatch "^3.0.4" - pidtree "^0.3.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-hash@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.3, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.19.5" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.4.0: - version "8.4.0" - resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -outvariant@^1.2.1, outvariant@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/outvariant/-/outvariant-1.3.0.tgz" - integrity sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ== - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.2.0.tgz#fa7877ecbc495c601907562222453c43cc204a5f" - integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== - -path-to-regexp@^6.2.0: - version "6.2.1" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz" - integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pidtree@^0.3.0: - version "0.3.1" - resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz" - integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -popmotion@11.0.5: - version "11.0.5" - resolved "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz" - integrity sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA== - dependencies: - framesync "6.1.2" - hey-listen "^1.0.8" - style-value-types "5.1.2" - tslib "2.4.0" - -postcss@^8.4.16: - version "8.4.18" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz" - integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier@^2.7.1: - version "2.7.1" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -prop-types@^15.6.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -react-clientside-effect@^1.2.6: - version "1.2.6" - resolved "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz" - integrity sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg== - dependencies: - "@babel/runtime" "^7.12.13" - -react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-fast-compare@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== - -react-focus-lock@^2.9.1: - version "2.9.1" - resolved "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz" - integrity sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg== - dependencies: - "@babel/runtime" "^7.0.0" - focus-lock "^0.11.2" - prop-types "^15.6.2" - react-clientside-effect "^1.2.6" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - -react-hook-form@^7.38.0: - version "7.38.0" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.38.0.tgz#53d6a68df587ce4ce88352f63e0ecc7fc8779320" - integrity sha512-gxWW1kMeru9xR1GoR+Iw4hA+JBOM3SHfr4DWCUKY0xc7Vv1MLsF109oHtBeWl9shcyPFx67KHru44DheN0XY5A== - -react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-refresh@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" - integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== - -react-remove-scroll-bar@^2.3.3: - version "2.3.4" - resolved "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz" - integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== - dependencies: - react-style-singleton "^2.2.1" - tslib "^2.0.0" - -react-remove-scroll@^2.5.4: - version "2.5.5" - resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz" - integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== - dependencies: - react-remove-scroll-bar "^2.3.3" - react-style-singleton "^2.2.1" - tslib "^2.1.0" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - -react-style-singleton@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz" - integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== - dependencies: - get-nonce "^1.0.0" - invariant "^2.2.4" - tslib "^2.0.0" - -react@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" - integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reflect-metadata@0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" - integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== - -regenerator-runtime@^0.13.4: - version "0.13.10" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz" - integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== - -regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1: - version "1.22.1" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.3: - version "2.0.0-next.4" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup@~2.78.0: - version "2.78.1" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz" - integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg== - optionalDependencies: - fsevents "~2.3.2" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@7.5.5: - version "7.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" - integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== - dependencies: - tslib "^2.1.0" - -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.5.5: - version "7.5.7" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== - dependencies: - tslib "^2.1.0" - -safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -"semver@2 || 3 || 4 || 5", semver@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.7: - version "7.3.8" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - -set-cookie-parser@^2.4.6: - version "2.5.1" - resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz" - integrity sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.7.4" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz" - integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== - -statuses@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -strict-event-emitter@^0.2.4, strict-event-emitter@^0.2.6: - version "0.2.7" - resolved "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.7.tgz" - integrity sha512-TavbHJ87WD2tDbKI7bTrmc6U4J4Qjh8E9fVvFkIFw2gCu34Wxstn2Yas0+4D78FJN8DOTEzxiT+udBdraRk4UQ== - dependencies: - events "^3.3.0" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" - side-channel "^1.0.4" - -string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-literal@^0.4.2: - version "0.4.2" - resolved "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz" - integrity sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw== - dependencies: - acorn "^8.8.0" - -style-value-types@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz" - integrity sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q== - dependencies: - hey-listen "^1.0.8" - tslib "2.4.0" - -stylis@4.0.13: - version "4.0.13" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.8.3: - version "0.8.4" - resolved "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz" - integrity sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw== - dependencies: - "@pkgr/utils" "^2.3.1" - tslib "^2.4.0" - -tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tiny-glob@^0.2.9: - version "0.2.9" - resolved "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - -tiny-invariant@^1.0.6: - version "1.3.1" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" - integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== - -tinybench@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.3.0.tgz" - integrity sha512-zs1gMVBwyyG2QbVchYIbnabRhMOCGvrwZz/q+SV+LIMa9q5YDQZi2kkI6ZRqV2Bz7ba1uvrc7ieUoE4KWnGeKg== - -tinypool@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/tinypool/-/tinypool-0.3.0.tgz" - integrity sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ== - -tinyspy@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz" - integrity sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" - integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== - -tslib@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tslib@2.4.0, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@^4.0.0, type-detect@^4.0.5: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^2.19.0: - version "2.19.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - -typescript@^4.6.4: - version "4.8.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -update-browserslist-db@^1.0.9: - version "1.0.10" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -use-callback-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz" - integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== - dependencies: - tslib "^2.0.0" - -use-sidecar@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz" - integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== - dependencies: - detect-node-es "^1.1.0" - tslib "^2.0.0" - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util@^0.12.3: - version "0.12.4" - resolved "https://registry.npmjs.org/util/-/util-0.12.4.tgz" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - safe-buffer "^5.1.2" - which-typed-array "^1.1.2" - -uuid@8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vite@^3.0.0, vite@^3.1.0: - version "3.1.8" - resolved "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz" - integrity sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg== - dependencies: - esbuild "^0.15.9" - postcss "^8.4.16" - resolve "^1.22.1" - rollup "~2.78.0" - optionalDependencies: - fsevents "~2.3.2" - -vitest@^0.24.3: - version "0.24.3" - resolved "https://registry.npmjs.org/vitest/-/vitest-0.24.3.tgz" - integrity sha512-aM0auuPPgMSstWvr851hB74g/LKaKBzSxcG3da7ejfZbx08Y21JpZmbmDYrMTCGhVZKqTGwzcnLMwyfz2WzkhQ== - dependencies: - "@types/chai" "^4.3.3" - "@types/chai-subset" "^1.3.3" - "@types/node" "*" - chai "^4.3.6" - debug "^4.3.4" - local-pkg "^0.4.2" - strip-literal "^0.4.2" - tinybench "^2.3.0" - tinypool "^0.3.0" - tinyspy "^1.0.2" - vite "^3.0.0" - -wcwidth@>=1.0.1, wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -web-encoding@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz" - integrity sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA== - dependencies: - util "^0.12.3" - optionalDependencies: - "@zxing/text-encoding" "0.9.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.2: - version "1.1.8" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz" - integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.20.0" - for-each "^0.3.3" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.9" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.0: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.3.1: - version "17.6.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz" - integrity sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/desktop/package.json b/desktop/package.json index 44147697..4511d89f 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -11,7 +11,7 @@ "build": "npm run build -ws --if-present", "codegen": "npm run codegen -ws --if-present", "lint": "eslint . --ext .ts,.tsx,mts", - "format": "yarn check:format --write", + "format": "npm run check:format --write", "check:format": "prettier . --check", "check:type": "npx --ws tsc", "code-check": "run-p lint check:*", From 86197c3d4c7ad1faf8c72e4d409a7333d2108390 Mon Sep 17 00:00:00 2001 From: averak Date: Tue, 8 Nov 2022 16:08:42 +0900 Subject: [PATCH 064/189] =?UTF-8?q?[feat]=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=88=E5=8F=96=E5=BE=97API=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PointerStompController.java | 4 +- .../api/controller/RoomController.java | 6 +- .../api/controller/RoomRestController.java | 26 +- .../api/controller/SlideStompController.java | 4 +- .../api/controller/TimerStompController.java | 2 +- .../api/controller/UserController.java | 66 +++++ .../api/response/UserResponse.java | 33 +++ .../api/response/UsersResponse.java | 24 ++ .../{ => pointer}/ControlPointerUseCase.java | 2 +- .../DisconnectPointerUseCase.java | 2 +- .../usecase/{ => room}/CreateRoomUseCase.java | 2 +- .../usecase/{ => room}/DeleteRoomUseCase.java | 2 +- .../{ => slide}/GoNextSlideUseCase.java | 2 +- .../{ => slide}/GoPreviousSlideUseCase.java | 2 +- .../{ => timer}/BroadcastTimerUseCase.java | 2 +- .../{ => timer}/ResetTimerUseCase.java | 2 +- .../{ => timer}/ResumeTimerUseCase.java | 2 +- .../{ => timer}/StartTimerUseCase.java | 2 +- .../usecase/{ => timer}/StopTimerUseCase.java | 2 +- .../usecase/user/GetUsersUseCase.java | 42 ++++ .../usecase/{ => user}/JoinRoomUseCase.java | 2 +- .../helper/graphql/GraphQLOperation.groovy | 35 --- .../helper/graphql/GraphQLQuery.groovy | 46 ---- .../controller/AbstractController_IT.groovy | 15 +- .../HealthCheckController_IT.groovy | 13 +- .../api/controller/RoomController_IT.groovy | 163 ++----------- .../api/controller/UserController_IT.groovy | 229 ++++++++++++++++++ .../ControlPointerUseCase_UT.groovy | 3 +- .../DisconnectPointerUseCase_UT.groovy | 3 +- .../{ => room}/CreateRoomUseCase_UT.groovy | 3 +- .../{ => room}/DeleteRoomUseCase_UT.groovy | 3 +- .../{ => slide}/GoNextSlideUseCase_UT.groovy | 3 +- .../GoPreviousSlideUseCase_UT.groovy | 3 +- .../BroadcastTimerUseCase_UT.groovy | 3 +- .../{ => timer}/ResetTimerUseCase_UT.groovy | 3 +- .../{ => timer}/ResumeTimerUseCase_UT.groovy | 3 +- .../{ => timer}/StartTimerUseCase_UT.groovy | 3 +- .../{ => timer}/StopTimerUseCase_UT.groovy | 3 +- .../usecase/user/GetUsersUseCase_UT.groovy | 50 ++++ .../{ => user}/JoinRoomUseCase_UT.groovy | 5 +- 40 files changed, 529 insertions(+), 291 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UserResponse.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UsersResponse.java rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => pointer}/ControlPointerUseCase.java (96%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => pointer}/DisconnectPointerUseCase.java (95%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => room}/CreateRoomUseCase.java (93%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => room}/DeleteRoomUseCase.java (95%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => slide}/GoNextSlideUseCase.java (95%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => slide}/GoPreviousSlideUseCase.java (95%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => timer}/BroadcastTimerUseCase.java (97%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => timer}/ResetTimerUseCase.java (96%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => timer}/ResumeTimerUseCase.java (96%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => timer}/StartTimerUseCase.java (97%) rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => timer}/StopTimerUseCase.java (96%) create mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/user/GetUsersUseCase.java rename app/src/main/java/dev/abelab/smartpointer/usecase/{ => user}/JoinRoomUseCase.java (98%) delete mode 100644 app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLOperation.groovy delete mode 100644 app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLQuery.groovy create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => pointer}/ControlPointerUseCase_UT.groovy (93%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => pointer}/DisconnectPointerUseCase_UT.groovy (92%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => room}/CreateRoomUseCase_UT.groovy (77%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => room}/DeleteRoomUseCase_UT.groovy (91%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => slide}/GoNextSlideUseCase_UT.groovy (92%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => slide}/GoPreviousSlideUseCase_UT.groovy (92%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => timer}/BroadcastTimerUseCase_UT.groovy (92%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => timer}/ResetTimerUseCase_UT.groovy (94%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => timer}/ResumeTimerUseCase_UT.groovy (95%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => timer}/StartTimerUseCase_UT.groovy (95%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => timer}/StopTimerUseCase_UT.groovy (94%) create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/user/GetUsersUseCase_UT.groovy rename app/src/test/groovy/dev/abelab/smartpointer/usecase/{ => user}/JoinRoomUseCase_UT.groovy (94%) diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerStompController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerStompController.java index 276f48ce..ca7dcf04 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerStompController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerStompController.java @@ -8,8 +8,8 @@ import dev.abelab.smartpointer.infrastructure.api.request.PointerControlRequest; import dev.abelab.smartpointer.infrastructure.api.validation.RequestValidated; -import dev.abelab.smartpointer.usecase.ControlPointerUseCase; -import dev.abelab.smartpointer.usecase.DisconnectPointerUseCase; +import dev.abelab.smartpointer.usecase.pointer.ControlPointerUseCase; +import dev.abelab.smartpointer.usecase.pointer.DisconnectPointerUseCase; import lombok.RequiredArgsConstructor; /** diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java index d2e00939..d64d8f80 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java @@ -6,9 +6,9 @@ import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse; import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse; -import dev.abelab.smartpointer.usecase.CreateRoomUseCase; -import dev.abelab.smartpointer.usecase.DeleteRoomUseCase; -import dev.abelab.smartpointer.usecase.JoinRoomUseCase; +import dev.abelab.smartpointer.usecase.room.CreateRoomUseCase; +import dev.abelab.smartpointer.usecase.room.DeleteRoomUseCase; +import dev.abelab.smartpointer.usecase.user.JoinRoomUseCase; import lombok.RequiredArgsConstructor; /** diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java index 2d3ab337..19d5156f 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java @@ -5,13 +5,9 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import dev.abelab.smartpointer.infrastructure.api.request.RoomJoinRequest; -import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse; import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse; -import dev.abelab.smartpointer.infrastructure.api.validation.RequestValidated; -import dev.abelab.smartpointer.usecase.CreateRoomUseCase; -import dev.abelab.smartpointer.usecase.DeleteRoomUseCase; -import dev.abelab.smartpointer.usecase.JoinRoomUseCase; +import dev.abelab.smartpointer.usecase.room.CreateRoomUseCase; +import dev.abelab.smartpointer.usecase.room.DeleteRoomUseCase; import lombok.RequiredArgsConstructor; /** @@ -29,8 +25,6 @@ public class RoomRestController { private final DeleteRoomUseCase deleteRoomUseCase; - private final JoinRoomUseCase joinRoomUseCase; - /** * ルーム作成API * @@ -54,20 +48,4 @@ public void deleteRoom(@PathVariable("room_id") final String roomId // this.deleteRoomUseCase.handle(roomId); } - /** - * ルーム入室API - * - * @param roomId ルームID - * @param requestBody ルーム入室リクエスト - * @return アクセストークン - */ - @PostMapping("/{room_id}/join") - @ResponseStatus(HttpStatus.OK) - public AccessTokenResponse joinRoom( // - @PathVariable("room_id") final String roomId, // - @RequestValidated @RequestBody final RoomJoinRequest requestBody // - ) { - return this.joinRoomUseCase.handle(roomId, requestBody.getPasscode(), requestBody.getName()); - } - } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideStompController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideStompController.java index d1207bab..50f83196 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideStompController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideStompController.java @@ -5,8 +5,8 @@ import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Controller; -import dev.abelab.smartpointer.usecase.GoNextSlideUseCase; -import dev.abelab.smartpointer.usecase.GoPreviousSlideUseCase; +import dev.abelab.smartpointer.usecase.slide.GoNextSlideUseCase; +import dev.abelab.smartpointer.usecase.slide.GoPreviousSlideUseCase; import lombok.RequiredArgsConstructor; /** diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java index 8d6e5196..ef4f522a 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java @@ -9,7 +9,7 @@ import dev.abelab.smartpointer.infrastructure.api.request.TimerResumeRequest; import dev.abelab.smartpointer.infrastructure.api.request.TimerStartRequest; import dev.abelab.smartpointer.infrastructure.api.validation.RequestValidated; -import dev.abelab.smartpointer.usecase.*; +import dev.abelab.smartpointer.usecase.timer.*; import lombok.RequiredArgsConstructor; /** diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java new file mode 100644 index 00000000..20934971 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java @@ -0,0 +1,66 @@ +package dev.abelab.smartpointer.infrastructure.api.controller; + +import java.util.stream.Collectors; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +import dev.abelab.smartpointer.infrastructure.api.request.RoomJoinRequest; +import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse; +import dev.abelab.smartpointer.infrastructure.api.response.UserResponse; +import dev.abelab.smartpointer.infrastructure.api.response.UsersResponse; +import dev.abelab.smartpointer.infrastructure.api.validation.RequestValidated; +import dev.abelab.smartpointer.usecase.user.GetUsersUseCase; +import dev.abelab.smartpointer.usecase.user.JoinRoomUseCase; +import lombok.RequiredArgsConstructor; + +/** + * ユーザコントローラ + */ +@Controller +@RequiredArgsConstructor +public class UserController { + + private final GetUsersUseCase getUsersUseCase; + + private final JoinRoomUseCase joinRoomUseCase; + + /** + * ユーザリスト取得API + * + * @param roomId ルームID + * @return ユーザリスト + */ + @QueryMapping + public UsersResponse getUsers( // + @Argument final String roomId // + ) { + final var users = this.getUsersUseCase.handle(roomId).stream() // + .map(UserResponse::new) // + .collect(Collectors.toList()); + return new UsersResponse(users); + } + + /** + * ルーム入室API + * + * @param roomId ルームID + * @param requestBody ルーム入室リクエスト + * @return アクセストークン + */ + @PostMapping("/{room_id}/join") + @ResponseStatus(HttpStatus.OK) + public AccessTokenResponse joinRoom( // + @PathVariable("room_id") final String roomId, // + @RequestValidated @RequestBody final RoomJoinRequest requestBody // + ) { + return this.joinRoomUseCase.handle(roomId, requestBody.getPasscode(), requestBody.getName()); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UserResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UserResponse.java new file mode 100644 index 00000000..686b7821 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UserResponse.java @@ -0,0 +1,33 @@ +package dev.abelab.smartpointer.infrastructure.api.response; + +import dev.abelab.smartpointer.domain.model.UserModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ユーザレスポンス + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class UserResponse { + + /** + * ユーザID + */ + String id; + + /** + * ユーザ名 + */ + String name; + + public UserResponse(final UserModel userModel) { + this.id = userModel.getId(); + this.name = userModel.getName(); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UsersResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UsersResponse.java new file mode 100644 index 00000000..56bf101d --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UsersResponse.java @@ -0,0 +1,24 @@ +package dev.abelab.smartpointer.infrastructure.api.response; + +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ユーザリストレスポンス + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class UsersResponse { + + /** + * ユーザID + */ + List users; + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/ControlPointerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase.java similarity index 96% rename from app/src/main/java/dev/abelab/smartpointer/usecase/ControlPointerUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase.java index e0f81657..c33b7eb0 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/ControlPointerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.pointer; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/DisconnectPointerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase.java similarity index 95% rename from app/src/main/java/dev/abelab/smartpointer/usecase/DisconnectPointerUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase.java index 5d9f206b..fc3d2fbd 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/DisconnectPointerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.pointer; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/CreateRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java similarity index 93% rename from app/src/main/java/dev/abelab/smartpointer/usecase/CreateRoomUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java index 27612e03..446e4efa 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/CreateRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.room; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/DeleteRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/room/DeleteRoomUseCase.java similarity index 95% rename from app/src/main/java/dev/abelab/smartpointer/usecase/DeleteRoomUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/room/DeleteRoomUseCase.java index 963fab07..e17e77c4 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/DeleteRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/room/DeleteRoomUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.room; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/GoNextSlideUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java similarity index 95% rename from app/src/main/java/dev/abelab/smartpointer/usecase/GoNextSlideUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java index dbccfb33..0e649e92 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/GoNextSlideUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.slide; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/GoPreviousSlideUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java similarity index 95% rename from app/src/main/java/dev/abelab/smartpointer/usecase/GoPreviousSlideUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java index 7a7d847e..fee9bfb9 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/GoPreviousSlideUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.slide; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/BroadcastTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase.java similarity index 97% rename from app/src/main/java/dev/abelab/smartpointer/usecase/BroadcastTimerUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase.java index bcb3c2a7..353911a0 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/BroadcastTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.timer; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Component; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/ResetTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase.java similarity index 96% rename from app/src/main/java/dev/abelab/smartpointer/usecase/ResetTimerUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase.java index 95a645be..ed566b50 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/ResetTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.timer; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/ResumeTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase.java similarity index 96% rename from app/src/main/java/dev/abelab/smartpointer/usecase/ResumeTimerUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase.java index 0ece6124..ef605ccf 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/ResumeTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.timer; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/StartTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java similarity index 97% rename from app/src/main/java/dev/abelab/smartpointer/usecase/StartTimerUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java index c2e3ee73..b96c8b46 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/StartTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.timer; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/StopTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase.java similarity index 96% rename from app/src/main/java/dev/abelab/smartpointer/usecase/StopTimerUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase.java index d8886ddb..2084a724 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/StopTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.timer; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/user/GetUsersUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/user/GetUsersUseCase.java new file mode 100644 index 00000000..019fb579 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/user/GetUsersUseCase.java @@ -0,0 +1,42 @@ +package dev.abelab.smartpointer.usecase.user; + +import java.util.List; + +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import dev.abelab.smartpointer.domain.model.UserModel; +import dev.abelab.smartpointer.domain.repository.RoomRepository; +import dev.abelab.smartpointer.domain.repository.UserRepository; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.NotFoundException; +import lombok.RequiredArgsConstructor; + +/** + * ユーザリスト取得ユースケース + */ +@RequiredArgsConstructor +@Component +public class GetUsersUseCase { + + private final RoomRepository roomRepository; + + private final UserRepository userRepository; + + /** + * Handle UseCase + * + * @param roomId ルームID + * @return ユーザリスト + */ + @Transactional + public List handle(final String roomId) { + // ルームの存在チェック + if (!this.roomRepository.existsById(roomId)) { + throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); + } + + return this.userRepository.selectByRoomId(roomId); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/JoinRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java similarity index 98% rename from app/src/main/java/dev/abelab/smartpointer/usecase/JoinRoomUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java index 23bda590..a41bb49f 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/JoinRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase; +package dev.abelab.smartpointer.usecase.user; import java.util.Date; diff --git a/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLOperation.groovy b/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLOperation.groovy deleted file mode 100644 index 25822951..00000000 --- a/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLOperation.groovy +++ /dev/null @@ -1,35 +0,0 @@ -package dev.abelab.smartpointer.helper.graphql - -import groovy.transform.TupleConstructor - -/** - * GraphQL Operation - */ -@TupleConstructor -enum GraphQLOperation { - - HEALTH_CHECK("health", GraphQLOperationType.QUERY), - - CREATE_ROOM("createRoom", GraphQLOperationType.MUTATION), - - DELETE_ROOM("deleteRoom", GraphQLOperationType.MUTATION), - - JOIN_ROOM("joinRoom", GraphQLOperationType.MUTATION), - - final String name - - final GraphQLOperationType type - - @TupleConstructor - private static enum GraphQLOperationType { - - QUERY("query"), - - MUTATION("mutation"), - - SUBSCRIPTION("subscription"), - - final String name - } - -} \ No newline at end of file diff --git a/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLQuery.groovy b/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLQuery.groovy deleted file mode 100644 index e1bc4c99..00000000 --- a/app/src/test/groovy/dev/abelab/smartpointer/helper/graphql/GraphQLQuery.groovy +++ /dev/null @@ -1,46 +0,0 @@ -package dev.abelab.smartpointer.helper.graphql - -import groovy.transform.TupleConstructor -import lombok.Value - -/** - * GraphQL Query - * - * Spockと相性の良いクエリビルダーが無かったため、これで済ませる - */ -@Value -@TupleConstructor -class GraphQLQuery { - - /** - * オペレーション - */ - GraphQLOperation operation - - /** - * 引数 - */ - Map variables - - /** - * レスポンスタイプ - * - * FIXME: responseTypeを指定せず、document()でTを取得したい - */ - Class responseType - - String document() { - final variableBlock = this.variables.isEmpty() - ? "" - : "(" + this.variables.collect { "${it.key}: ${it.value instanceof String ? "\"" : ""}${it.value}${it.value instanceof String ? "\"" : ""}" }.join(", ") + ")" - final responseBlock = [String, Number, Boolean].any { this.responseType.isInstance(it) || this.responseType == it } - ? "" - : " { ${this.responseType.declaredFields*.name.join(" ")} }" - return """ - ${this.operation.type.name} { - ${this.operation.name}${variableBlock}${responseBlock} - } - """ - } - -} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy index 61bf169a..f96ff5b2 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy @@ -2,7 +2,6 @@ package dev.abelab.smartpointer.infrastructure.api.controller import dev.abelab.smartpointer.AbstractDatabaseSpecification import dev.abelab.smartpointer.exception.BaseException -import dev.abelab.smartpointer.helper.graphql.GraphQLQuery import dev.abelab.smartpointer.property.AuthProperty import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.autoconfigure.graphql.tester.AutoConfigureHttpGraphQlTester @@ -28,12 +27,14 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { * Execute query / return response * * @param query query + * @param operation operation + * @param clazz clazz * @return response */ - def T execute(final GraphQLQuery query) { - final response = this.graphQlTester.document(query.document()).execute() - .path(query.operation.name) - .entity(query.responseType) + def T execute(final String query, final String operation, final Class clazz) { + final response = this.graphQlTester.document(query).execute() + .path(operation) + .entity(clazz) return response.get() } @@ -44,9 +45,9 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { * @param query query * @param exception expected exception */ - def execute(final GraphQLQuery query, final BaseException exception) { + def execute(final String query, final BaseException exception) { final expectedErrorMessage = this.getErrorMessage(exception) - this.graphQlTester.document(query.document()).execute() + this.graphQlTester.document(query).execute() .errors() .satisfy({ assert it[0].errorType == exception.errorType diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy index 2c3fcb3f..518a0b4f 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy @@ -1,9 +1,5 @@ package dev.abelab.smartpointer.infrastructure.api.controller - -import dev.abelab.smartpointer.helper.graphql.GraphQLOperation -import dev.abelab.smartpointer.helper.graphql.GraphQLQuery - /** * HealthCheckControllerの統合テスト */ @@ -11,8 +7,13 @@ class HealthCheckController_IT extends AbstractController_IT { def "ヘルスチェックAPI: 正常系 trueを返す"() { when: - final query = new GraphQLQuery(GraphQLOperation.HEALTH_CHECK, [:], Boolean) - final response = this.execute(query) + final query = + """ + query { + health + } + """ + final response = this.execute(query, "health", Boolean) then: response diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy index 834a9cf9..ef2dcf1b 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy @@ -1,14 +1,9 @@ package dev.abelab.smartpointer.infrastructure.api.controller -import dev.abelab.smartpointer.exception.BadRequestException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException -import dev.abelab.smartpointer.exception.UnauthorizedException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper -import dev.abelab.smartpointer.helper.graphql.GraphQLOperation -import dev.abelab.smartpointer.helper.graphql.GraphQLQuery -import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse /** @@ -18,8 +13,16 @@ class RoomController_IT extends AbstractController_IT { def "ルーム作成API: 正常系 ルームを作成できる"() { when: - final query = new GraphQLQuery(GraphQLOperation.CREATE_ROOM, [:], RoomResponse) - final response = this.execute(query) + final query = + """ + mutation { + createRoom { + id + passcode + } + } + """ + final response = this.execute(query, "createRoom", RoomResponse) then: final rooms = sql.rows("SELECT * FROM room") @@ -40,8 +43,13 @@ class RoomController_IT extends AbstractController_IT { // @formatter:on when: - final query = new GraphQLQuery(GraphQLOperation.DELETE_ROOM, [roomId: "00000000-0000-0000-0000-000000000000"], String) - final response = this.execute(query) + final query = + """ + mutation { + deleteRoom(roomId: "00000000-0000-0000-0000-000000000000") + } + """ + final response = this.execute(query, "deleteRoom", String) then: response == "00000000-0000-0000-0000-000000000000" @@ -60,138 +68,13 @@ class RoomController_IT extends AbstractController_IT { // @formatter:on expect: - final query = new GraphQLQuery(GraphQLOperation.DELETE_ROOM, [roomId: "00000000-0000-0000-0000-000000000001"], String) + final query = + """ + mutation { + deleteRoom(roomId: "00000000-0000-0000-0000-000000000001") + } + """ this.execute(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) } - def "ルーム入室API: 正常系 入室に成功するとアクセストークンを返す"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - // @formatter:on - - when: - final query = new GraphQLQuery( - GraphQLOperation.JOIN_ROOM, - [roomId: roomId, passcode: roomPasscode, userName: inputUserName], - AccessTokenResponse - ) - final response = this.execute(query) - - then: - response.tokenType == this.authProperty.tokenType - response.accessToken != null - response.ttl == this.authProperty.ttl - - final createdUser = sql.firstRow("SELECT * FROM user") - createdUser.room_id == roomId - createdUser.name == inputUserName - - where: - inputUserName << [ - RandomHelper.alphanumeric(1), - RandomHelper.alphanumeric(255), - ] - } - - def "ルーム入室API: 異常系 リクエストボディのバリデーション"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - // @formatter:on - - expect: - final query = new GraphQLQuery( - GraphQLOperation.JOIN_ROOM, - [roomId: roomId, passcode: roomPasscode, userName: inputUserName], - AccessTokenResponse - ) - this.execute(query, new BadRequestException(expectedErrorCode)) - - where: - inputUserName || expectedErrorCode - RandomHelper.alphanumeric(0) || ErrorCode.INVALID_USER_NAME - RandomHelper.alphanumeric(256) || ErrorCode.INVALID_USER_NAME - } - - def "ルーム入室API: 異常系 ルームが存在しない場合は404エラー"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - // @formatter:on - - expect: - final query = new GraphQLQuery( - GraphQLOperation.JOIN_ROOM, - [roomId: roomId + "...", passcode: roomPasscode, userName: RandomHelper.alphanumeric(10)], - AccessTokenResponse - ) - this.execute(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) - } - - def "ルーム入室API: 異常系 パスコードが間違えている場合は401エラー"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - // @formatter:on - - expect: - final query = new GraphQLQuery( - GraphQLOperation.JOIN_ROOM, - [roomId: roomId, passcode: roomPasscode + "...", userName: RandomHelper.alphanumeric(10)], - AccessTokenResponse - ) - this.execute(query, new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE)) - } - - def "ルーム入室API: 異常系 ユーザ名が既に使われている場合は400エラー"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - final userName = RandomHelper.alphanumeric(10) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - TableHelper.insert sql, "user", { - room_id | name - roomId | userName - } - // @formatter:on - - expect: - final query = new GraphQLQuery( - GraphQLOperation.JOIN_ROOM, - [roomId: roomId, passcode: roomPasscode, userName: userName], - AccessTokenResponse - ) - this.execute(query, new BadRequestException(ErrorCode.USER_NAME_IS_ALREADY_EXISTS)) - } - } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy new file mode 100644 index 00000000..8240eacf --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy @@ -0,0 +1,229 @@ +package dev.abelab.smartpointer.infrastructure.api.controller + +import dev.abelab.smartpointer.exception.BadRequestException +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.exception.UnauthorizedException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.helper.TableHelper +import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse +import dev.abelab.smartpointer.infrastructure.api.response.UsersResponse + +/** + * UserControllerの統合テスト + */ +class UserController_IT extends AbstractController_IT { + + def "ユーザリスト取得API: 正常系 ユーザリストを取得する"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + "00000000-0000-0000-0000-000000000001" | "000000" + "00000000-0000-0000-0000-000000000002" | "000000" + } + TableHelper.insert sql, "user", { + id | room_id | name + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "A" + "00000000-0000-0000-0000-000000000001" | "00000000-0000-0000-0000-000000000000" | "B" + "00000000-0000-0000-0000-000000000002" | "00000000-0000-0000-0000-000000000001" | "C" + } + // @formatter:on + + when: + final query = + """ + query { + getUsers(roomId: "${inputRoomId}") { + users { + id + name + } + } + } + """ + final response = this.execute(query, "getUsers", UsersResponse) + + then: + response.users*.name == expectedUserNames + + where: + inputRoomId || expectedUserNames + "00000000-0000-0000-0000-000000000000" || ["A", "B"] + "00000000-0000-0000-0000-000000000001" || ["C"] + "00000000-0000-0000-0000-000000000002" || [] + } + + def "ユーザリスト取得API: 異常系 ルームが存在しない場合は404エラー"() { + expect: + final query = + """ + query { + getUsers(roomId: "") { + users { + id + name + } + } + } + """ + this.execute(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + + def "ルーム入室API: 正常系 入室に成功するとアクセストークンを返す"() { + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + // @formatter:on + + when: + final query = + """ + mutation { + joinRoom(roomId: "${roomId}", passcode: "${roomPasscode}", userName: "${inputUserName}") { + tokenType + accessToken + ttl + } + } + """ + final response = this.execute(query, "joinRoom", AccessTokenResponse) + + then: + response.tokenType == this.authProperty.tokenType + response.accessToken != null + response.ttl == this.authProperty.ttl + + final createdUser = sql.firstRow("SELECT * FROM user") + createdUser.room_id == roomId + createdUser.name == inputUserName + + where: + inputUserName << [ + RandomHelper.alphanumeric(1), + RandomHelper.alphanumeric(255), + ] + } + + def "ルーム入室API: 異常系 リクエストボディのバリデーション"() { + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + // @formatter:on + + expect: + final query = + """ + mutation { + joinRoom(roomId: "${roomId}", passcode: "${roomPasscode}", userName: "${inputUserName}") { + tokenType + accessToken + ttl + } + } + """ + this.execute(query, new BadRequestException(expectedErrorCode)) + + where: + inputUserName || expectedErrorCode + RandomHelper.alphanumeric(0) || ErrorCode.INVALID_USER_NAME + RandomHelper.alphanumeric(256) || ErrorCode.INVALID_USER_NAME + } + + def "ルーム入室API: 異常系 ルームが存在しない場合は404エラー"() { + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + // @formatter:on + + expect: + final query = + """ + mutation { + joinRoom(roomId: "${roomId + "..."}", passcode: "${roomPasscode}", userName: "...") { + tokenType + accessToken + ttl + } + } + """ + this.execute(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + + def "ルーム入室API: 異常系 パスコードが間違えている場合は401エラー"() { + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + // @formatter:on + + expect: + final query = + """ + mutation { + joinRoom(roomId: "${roomId}", passcode: "${roomPasscode + "..."}", userName: "...") { + tokenType + accessToken + ttl + } + } + """ + this.execute(query, new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE)) + } + + def "ルーム入室API: 異常系 ユーザ名が既に使われている場合は400エラー"() { + given: + final roomId = RandomHelper.uuid() + final roomPasscode = RandomHelper.numeric(6) + final userName = RandomHelper.alphanumeric(10) + + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + roomId | roomPasscode + } + TableHelper.insert sql, "user", { + room_id | name + roomId | userName + } + // @formatter:on + + expect: + final query = + """ + mutation { + joinRoom(roomId: "${roomId}", passcode: "${roomPasscode}", userName: "${userName}") { + tokenType + accessToken + ttl + } + } + """ + this.execute(query, new BadRequestException(ErrorCode.USER_NAME_IS_ALREADY_EXISTS)) + } + +} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/ControlPointerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase_UT.groovy similarity index 93% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/ControlPointerUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase_UT.groovy index 812542ff..eeb6e897 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/ControlPointerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase_UT.groovy @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.pointer import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.exception.BaseException @@ -6,6 +6,7 @@ import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.infrastructure.api.request.PointerControlRequest +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/DisconnectPointerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase_UT.groovy similarity index 92% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/DisconnectPointerUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase_UT.groovy index 9faf9fe0..3b75d7a8 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/DisconnectPointerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase_UT.groovy @@ -1,10 +1,11 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.pointer import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/CreateRoomUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy similarity index 77% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/CreateRoomUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy index 44693af4..7c850fa3 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/CreateRoomUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy @@ -1,5 +1,6 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.room +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/DeleteRoomUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/DeleteRoomUseCase_UT.groovy similarity index 91% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/DeleteRoomUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/room/DeleteRoomUseCase_UT.groovy index 660fdf06..690df250 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/DeleteRoomUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/DeleteRoomUseCase_UT.groovy @@ -1,10 +1,11 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.room import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/GoNextSlideUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy similarity index 92% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/GoNextSlideUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy index 3787421a..024092fe 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/GoNextSlideUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.slide import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.enums.SlideControl @@ -6,6 +6,7 @@ import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/GoPreviousSlideUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy similarity index 92% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/GoPreviousSlideUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy index 5cf2452e..bc281d65 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/GoPreviousSlideUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.slide import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.enums.SlideControl @@ -6,6 +6,7 @@ import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/BroadcastTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase_UT.groovy similarity index 92% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/BroadcastTimerUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase_UT.groovy index 10eae4ec..d49de67e 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/BroadcastTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase_UT.groovy @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.timer import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.domain.model.TimerModel @@ -6,6 +6,7 @@ import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/ResetTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase_UT.groovy similarity index 94% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/ResetTimerUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase_UT.groovy index 2dd2a020..b3267c58 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/ResetTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase_UT.groovy @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.timer import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.domain.model.TimerModel @@ -6,6 +6,7 @@ import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/ResumeTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase_UT.groovy similarity index 95% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/ResumeTimerUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase_UT.groovy index bd5f6197..c516a6f5 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/ResumeTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase_UT.groovy @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.timer import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.domain.model.TimerModel @@ -7,6 +7,7 @@ import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.infrastructure.api.request.TimerResumeRequest +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/StartTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy similarity index 95% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/StartTimerUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy index 99daa0dc..506bbc85 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/StartTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.timer import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.domain.model.TimerModel @@ -7,6 +7,7 @@ import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.infrastructure.api.request.TimerStartRequest +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/StopTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase_UT.groovy similarity index 94% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/StopTimerUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase_UT.groovy index 766c33e6..afcedb4d 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/StopTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase_UT.groovy @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.timer import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.domain.model.TimerModel @@ -6,6 +6,7 @@ import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/user/GetUsersUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/user/GetUsersUseCase_UT.groovy new file mode 100644 index 00000000..4751bef4 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/user/GetUsersUseCase_UT.groovy @@ -0,0 +1,50 @@ +package dev.abelab.smartpointer.usecase.user + +import dev.abelab.smartpointer.domain.model.RoomModel +import dev.abelab.smartpointer.domain.model.UserModel +import dev.abelab.smartpointer.exception.BaseException +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT +import org.springframework.beans.factory.annotation.Autowired + +/** + * GetUsersUseCaseの単体テスト + */ +class GetUsersUseCase_UT extends AbstractUseCase_UT { + + @Autowired + GetUsersUseCase sut + + def "handle: ユーザリストを取得"() { + given: + final room = RandomHelper.mock(RoomModel) + final users = [ + RandomHelper.mock(UserModel), + RandomHelper.mock(UserModel), + ] + + when: + final result = this.sut.handle(room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.userRepository.selectByRoomId(room.id) >> users + result == users + } + + def "handle: ルームが存在しない場合は404エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + + when: + this.sut.handle(room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> false + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + +} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/JoinRoomUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase_UT.groovy similarity index 94% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/JoinRoomUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase_UT.groovy index 136c9ba7..210d3cd6 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/JoinRoomUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase_UT.groovy @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.usecase +package dev.abelab.smartpointer.usecase.user import dev.abelab.smartpointer.domain.model.RoomModel import dev.abelab.smartpointer.exception.BaseException @@ -7,6 +7,7 @@ import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.exception.UnauthorizedException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.property.AuthProperty +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** @@ -18,7 +19,7 @@ class JoinRoomUseCase_UT extends AbstractUseCase_UT { JoinRoomUseCase sut @Autowired - AuthProperty authProperty; + AuthProperty authProperty def "handle: ログインに成功するとアクセストークンを返す"() { given: From 49e40a321e1dadbfe8e699a3aad80600338b1390 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Tue, 8 Nov 2022 17:19:02 +0900 Subject: [PATCH 065/189] introduce graphql-codegen to pointer --- app/src/main/pointer/.prettierignore | 1 + app/src/main/pointer/codegen.ts | 16 + app/src/main/pointer/package-lock.json | 20258 ++++++++++------ app/src/main/pointer/package.json | 10 +- .../main/pointer/src/gql/fragment-masking.ts | 40 + app/src/main/pointer/src/gql/gql.ts | 11 + app/src/main/pointer/src/gql/graphql.ts | 68 + app/src/main/pointer/src/gql/index.ts | 2 + app/src/main/pointer/tsconfig.json | 23 +- 9 files changed, 13646 insertions(+), 6783 deletions(-) create mode 100644 app/src/main/pointer/.prettierignore create mode 100644 app/src/main/pointer/codegen.ts create mode 100644 app/src/main/pointer/src/gql/fragment-masking.ts create mode 100644 app/src/main/pointer/src/gql/gql.ts create mode 100644 app/src/main/pointer/src/gql/graphql.ts create mode 100644 app/src/main/pointer/src/gql/index.ts diff --git a/app/src/main/pointer/.prettierignore b/app/src/main/pointer/.prettierignore new file mode 100644 index 00000000..e571d090 --- /dev/null +++ b/app/src/main/pointer/.prettierignore @@ -0,0 +1 @@ +src/gql/** diff --git a/app/src/main/pointer/codegen.ts b/app/src/main/pointer/codegen.ts new file mode 100644 index 00000000..b867a06d --- /dev/null +++ b/app/src/main/pointer/codegen.ts @@ -0,0 +1,16 @@ +import { CodegenConfig } from "@graphql-codegen/cli"; + +const config: CodegenConfig = { + overwrite: true, + schema: "../resources/graphql/schema.graphqls", + documents: ["src/**/*.ts{,x}"], + ignoreNoDocuments: true, + generates: { + "./src/gql/": { + preset: "client", + plugins: [], + }, + }, +}; + +export default config; diff --git a/app/src/main/pointer/package-lock.json b/app/src/main/pointer/package-lock.json index d915f6e8..7d7c3cbf 100644 --- a/app/src/main/pointer/package-lock.json +++ b/app/src/main/pointer/package-lock.json @@ -15,12 +15,16 @@ "@stomp/stompjs": "^6.1.2", "axios": "^1.1.3", "framer-motion": "7.5.3", + "graphql": "16.6.0", + "graphql-request": "5.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.38.0" }, "devDependencies": { - "@openapitools/openapi-generator-cli": "^2.5.2", + "@graphql-codegen/cli": "2.13.11", + "@graphql-codegen/client-preset": "1.1.3", + "@openapitools/openapi-generator-cli": "2.5.2", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", "@typescript-eslint/eslint-plugin": "^5.40.0", @@ -37,7 +41,7 @@ "msw": "^0.47.4", "npm-run-all": "^4.1.5", "prettier": "^2.7.1", - "typescript": "^4.6.4", + "typescript": "4.8.4", "vite": "^3.1.0", "vitest": "^0.24.3" } @@ -54,6 +58,237 @@ "node": ">=6.0.0" } }, + "node_modules/@ardatan/relay-compiler": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", + "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "chalk": "^4.0.0", + "fb-watchman": "^2.0.0", + "fbjs": "^3.0.0", + "glob": "^7.1.1", + "immutable": "~3.7.6", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "relay-runtime": "12.0.0", + "signedsource": "^1.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "relay-compiler": "bin/relay-compiler" + }, + "peerDependencies": { + "graphql": "*" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@ardatan/relay-compiler/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@ardatan/relay-compiler/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@ardatan/sync-fetch": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz", + "integrity": "sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -157,6 +392,27 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/helper-environment-visitor": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", @@ -188,6 +444,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", @@ -217,6 +485,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-plugin-utils": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", @@ -225,6 +505,22 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-simple-access": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", @@ -236,6 +532,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", @@ -308,11 +616,13 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { + "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { @@ -322,17 +632,17 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", - "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.19.0" + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" }, "engines": { "node": ">=6.9.0" @@ -341,13 +651,25 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-development": { + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -356,11 +678,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { + "node_modules/@babel/plugin-syntax-jsx": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", - "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", - "dev": true, + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -371,444 +692,462 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", - "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.10" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz", - "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "dependencies": { - "core-js-pure": "^3.25.1", - "regenerator-runtime": "^0.13.10" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@chakra-ui/accordion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.1.tgz", - "integrity": "sha512-5f4QBl/0EgU/9EVvzlj8ZU7SWwG6nUHCE9moGBCbgiIOVBEySxZ5Robsk6+T7sXmzQ41db04GcUE9NRKdalgIA==", - "dependencies": { - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/transition": "2.0.10" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/alert": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", - "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, "dependencies": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/spinner": "2.0.10" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/anatomy": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", - "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" - }, - "node_modules/@chakra-ui/avatar": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.1.1.tgz", - "integrity": "sha512-lTZPUq4Pefxgv3ndyJMxIHgFrXwdz2VZFCLF/aKcuGaUlB7TBYaCurQ7TNbME8j8VkJWNX+vKiVHPYvxsrITwQ==", + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", + "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", + "dev": true, "dependencies": { - "@chakra-ui/image": "2.0.11", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-flow": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/breadcrumb": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.0.10.tgz", - "integrity": "sha512-roKFA7nheq18eWNAdrHV6w8A9vZMSQTEEsbL6eU0lhUkolW9RlDjBl1bZvE7icFkNFXlJ33n8+0QAezLI+mMrQ==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, "dependencies": { - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/breakpoint-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", - "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" - }, - "node_modules/@chakra-ui/button": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", - "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, "dependencies": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/spinner": "2.0.10" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/checkbox": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.1.tgz", - "integrity": "sha512-soTeXEI+4UZSA4B4rRLpdh3cIW/gdhY6k0eXF4ZWExPb+dJ5Giv497S96vS4IGE7SJ7Ugw9kaWS+do2lSiPJew==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, "dependencies": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/visually-hidden": "2.0.11", - "@zag-js/focus-visible": "0.1.0" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/clickable": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", - "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, "dependencies": { - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/close-button": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", - "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, "dependencies": { - "@chakra-ui/icon": "3.0.11" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/color-mode": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", - "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, "dependencies": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/control-box": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", - "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/counter": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", - "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "dev": true, "dependencies": { - "@chakra-ui/number-utils": "2.0.4", - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/css-reset": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", - "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { - "@emotion/react": ">=10.0.35", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/descendant": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", - "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, "dependencies": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/dom-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", - "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" - }, - "node_modules/@chakra-ui/editable": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.12.tgz", - "integrity": "sha512-37bDqm+j2JTN2XR443KRK9MmHHIQuS6fN+2TRuFgjfG8TomxxCJnhJ3GIfQSKh5Yjtnt4sXDmL4L0tyDpNrrrw==", + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, "dependencies": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/event-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", - "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" - }, - "node_modules/@chakra-ui/focus-lock": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", - "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, "dependencies": { - "@chakra-ui/dom-utils": "2.0.3", - "react-focus-lock": "^2.9.1" + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/form-control": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", - "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, "dependencies": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/hooks": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.0.11.tgz", - "integrity": "sha512-mYN4u9lbjDjEr/VucrVcLGg/sIO6gA9ZprcT3n9CBGSWt3xih7fCOJmE+yRcCNbL7335AMrv7a/M5Q30aRArcA==", + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, "dependencies": { - "@chakra-ui/react-utils": "2.0.8", - "@chakra-ui/utils": "2.0.11", - "compute-scroll-into-view": "1.0.14", - "copy-to-clipboard": "3.3.1" + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/icon": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", - "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, "dependencies": { - "@chakra-ui/shared-utils": "2.0.2" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/image": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", - "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, "dependencies": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/input": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.11.tgz", - "integrity": "sha512-kaV0VCz6/yzoCKQnh/tMUVgh+Rp6EnM+WzJ37SVX1gDvErON2bmmVLU45BiRoWUcd50wOhDlpsNVUWP0sLlCDA==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, "dependencies": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/object-utils": "2.0.4", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/layout": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.8.tgz", - "integrity": "sha512-pcNUNgMh+e4wepNOlCg5iDrxGg4VFBpqZPmSHoP4TyPN2ddEnDRLoMLaREMoX7gEVyTsqEFOFg+wa3JZK32H4A==", + "node_modules/@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", "dependencies": { - "@chakra-ui/breakpoint-utils": "2.0.4", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/object-utils": "2.0.4", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "regenerator-runtime": "^0.13.10" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@chakra-ui/lazy-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", - "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" + "node_modules/@babel/runtime-corejs3": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz", + "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==", + "dev": true, + "dependencies": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.10" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/@chakra-ui/live-region": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", - "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", - "peerDependencies": { - "react": ">=18" + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@chakra-ui/media-query": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", - "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", + "node_modules/@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", "dependencies": { - "@chakra-ui/breakpoint-utils": "2.0.4", - "@chakra-ui/react-env": "2.0.10" + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@chakra-ui/menu": { + "node_modules/@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@chakra-ui/accordion": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.1.tgz", - "integrity": "sha512-9fpCyV3vufLV5Rvv/oYC3LyCIkNqh0bEdYFVOLiqCZ6mt6NLFxL2jgE25nROYfDXQuBkY0qPC9IopYU198G4nw==", + "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.1.tgz", + "integrity": "sha512-5f4QBl/0EgU/9EVvzlj8ZU7SWwG6nUHCE9moGBCbgiIOVBEySxZ5Robsk6+T7sXmzQ41db04GcUE9NRKdalgIA==", "dependencies": { - "@chakra-ui/clickable": "2.0.10", "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/icon": "3.0.11", "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-animation-state": "2.0.5", "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-focus-effect": "2.0.5", "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-outside-click": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4", "@chakra-ui/transition": "2.0.10" }, "peerDependencies": { @@ -817,512 +1156,472 @@ "react": ">=18" } }, - "node_modules/@chakra-ui/modal": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.1.tgz", - "integrity": "sha512-+zfiUG/yZqUQ0wY7syoZg01cpBf54lbKUe7+ANEx558UQGbsI4bbcHSkY9l5lsprQ8teInvhjb6BekeCA0e7TA==", + "node_modules/@chakra-ui/alert": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", + "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", "dependencies": { - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/focus-lock": "2.0.12", - "@chakra-ui/portal": "2.0.10", + "@chakra-ui/icon": "3.0.11", "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/transition": "2.0.10", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.5.4" + "@chakra-ui/spinner": "2.0.10" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" + "react": ">=18" } }, - "node_modules/@chakra-ui/number-input": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", - "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", + "node_modules/@chakra-ui/anatomy": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", + "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" + }, + "node_modules/@chakra-ui/avatar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.1.1.tgz", + "integrity": "sha512-lTZPUq4Pefxgv3ndyJMxIHgFrXwdz2VZFCLF/aKcuGaUlB7TBYaCurQ7TNbME8j8VkJWNX+vKiVHPYvxsrITwQ==", "dependencies": { - "@chakra-ui/counter": "2.0.10", - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-interval": "2.0.2", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4" + "@chakra-ui/image": "2.0.11", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/number-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", - "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" - }, - "node_modules/@chakra-ui/object-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", - "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" - }, - "node_modules/@chakra-ui/pin-input": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.14.tgz", - "integrity": "sha512-gFNlTUjU1xIuOErR/d/HrNNh1mS0erjNJSt5C6RU/My4lShzgCczmwnil7TuEx3k7lPqHKLEf/CGeCxBSUjaGA==", + "node_modules/@chakra-ui/breadcrumb": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.0.10.tgz", + "integrity": "sha512-roKFA7nheq18eWNAdrHV6w8A9vZMSQTEEsbL6eU0lhUkolW9RlDjBl1bZvE7icFkNFXlJ33n8+0QAezLI+mMrQ==", "dependencies": { - "@chakra-ui/descendant": "3.0.10", "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@chakra-ui/react-context": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/popover": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", - "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", + "node_modules/@chakra-ui/breakpoint-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", + "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + }, + "node_modules/@chakra-ui/button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", + "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", "dependencies": { - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/popper": "3.0.8", "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-animation-state": "2.0.5", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-focus-effect": "2.0.5", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/spinner": "2.0.10" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/popper": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", - "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", + "node_modules/@chakra-ui/checkbox": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.1.tgz", + "integrity": "sha512-soTeXEI+4UZSA4B4rRLpdh3cIW/gdhY6k0eXF4ZWExPb+dJ5Giv497S96vS4IGE7SJ7Ugw9kaWS+do2lSiPJew==", "dependencies": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", "@chakra-ui/react-use-merge-refs": "2.0.4", - "@popperjs/core": "^2.9.3" + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/visually-hidden": "2.0.11", + "@zag-js/focus-visible": "0.1.0" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/portal": { + "node_modules/@chakra-ui/clickable": { "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", - "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", + "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", + "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", "dependencies": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "@chakra-ui/react-use-merge-refs": "2.0.4" }, "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" + "react": ">=18" } }, - "node_modules/@chakra-ui/progress": { + "node_modules/@chakra-ui/close-button": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.11.tgz", - "integrity": "sha512-2OwxGxI6W757QpDB6b++B4b2+t0oBgaQdHnd4/y35n3+mOFj++Wg7XpW4/iDHn+x3LkM+X3NIgdBWQFlmGx+6w==", + "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", + "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", "dependencies": { - "@chakra-ui/react-context": "2.0.4" + "@chakra-ui/icon": "3.0.11" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/provider": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.19.tgz", - "integrity": "sha512-V+p0OePre0OgYmNxLbfiPWWbzaJ/EM2sfaRtD7E6ZA4TjUl2m4pWdC6OPMOiklu7EALfSgVk9X6Jh5pc+moH1g==", + "node_modules/@chakra-ui/color-mode": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", + "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", "dependencies": { - "@chakra-ui/css-reset": "2.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-env": "2.0.10", - "@chakra-ui/system": "2.2.12", - "@chakra-ui/utils": "2.0.11" + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" }, "peerDependencies": { - "@emotion/react": "^11.0.0", - "@emotion/styled": "^11.0.0", - "react": ">=18", - "react-dom": ">=18" + "react": ">=18" } }, - "node_modules/@chakra-ui/radio": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", - "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", - "dependencies": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@zag-js/focus-visible": "0.1.0" - }, + "node_modules/@chakra-ui/control-box": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", + "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.5.tgz", - "integrity": "sha512-bQDRV23M3IvF0+AorTvqJmG/4T6KKQIb+1XGA2RyxonoSHVt89HbN3qnygHJw06Sdgpclxdbr/1qZ4o8+SMbpA==", + "node_modules/@chakra-ui/counter": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", + "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", "dependencies": { - "@chakra-ui/accordion": "2.1.1", - "@chakra-ui/alert": "2.0.11", - "@chakra-ui/avatar": "2.1.1", - "@chakra-ui/breadcrumb": "2.0.10", - "@chakra-ui/button": "2.0.11", - "@chakra-ui/checkbox": "2.2.1", - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/control-box": "2.0.10", - "@chakra-ui/counter": "2.0.10", - "@chakra-ui/css-reset": "2.0.8", - "@chakra-ui/editable": "2.0.12", - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/hooks": "2.0.11", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/image": "2.0.11", - "@chakra-ui/input": "2.0.11", - "@chakra-ui/layout": "2.1.8", - "@chakra-ui/live-region": "2.0.10", - "@chakra-ui/media-query": "3.2.7", - "@chakra-ui/menu": "2.1.1", - "@chakra-ui/modal": "2.2.1", - "@chakra-ui/number-input": "2.0.12", - "@chakra-ui/pin-input": "2.0.14", - "@chakra-ui/popover": "2.1.1", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/progress": "2.0.11", - "@chakra-ui/provider": "2.0.19", - "@chakra-ui/radio": "2.0.12", - "@chakra-ui/react-env": "2.0.10", - "@chakra-ui/select": "2.0.12", - "@chakra-ui/skeleton": "2.0.17", - "@chakra-ui/slider": "2.0.12", - "@chakra-ui/spinner": "2.0.10", - "@chakra-ui/stat": "2.0.11", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/switch": "2.0.13", - "@chakra-ui/system": "2.2.12", - "@chakra-ui/table": "2.0.11", - "@chakra-ui/tabs": "2.1.3", - "@chakra-ui/tag": "2.0.11", - "@chakra-ui/textarea": "2.0.12", - "@chakra-ui/theme": "2.1.13", - "@chakra-ui/toast": "3.0.13", - "@chakra-ui/tooltip": "2.2.0", - "@chakra-ui/transition": "2.0.10", - "@chakra-ui/utils": "2.0.11", - "@chakra-ui/visually-hidden": "2.0.11" + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-use-callback-ref": "2.0.4" }, "peerDependencies": { - "@emotion/react": "^11.0.0", - "@emotion/styled": "^11.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" + "react": ">=18" } }, - "node_modules/@chakra-ui/react-children-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.2.tgz", - "integrity": "sha512-mRTGAZ3DBXB3hgVwS2DVJe3Nlc0qGvMN0PAo4tD/3fj2op2IwspLcYPAWC5D/rI2xj2JlwE6szAtbvxdAfLCNw==" - }, - "node_modules/@chakra-ui/react-context": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", - "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "node_modules/@chakra-ui/css-reset": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", + "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", "peerDependencies": { + "@emotion/react": ">=10.0.35", "react": ">=18" } }, - "node_modules/@chakra-ui/react-env": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", - "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", + "node_modules/@chakra-ui/descendant": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", + "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-types": { + "node_modules/@chakra-ui/dom-utils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", - "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", - "peerDependencies": { - "react": ">=18" - } + "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", + "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" }, - "node_modules/@chakra-ui/react-use-animation-state": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", - "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", + "node_modules/@chakra-ui/editable": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.12.tgz", + "integrity": "sha512-37bDqm+j2JTN2XR443KRK9MmHHIQuS6fN+2TRuFgjfG8TomxxCJnhJ3GIfQSKh5Yjtnt4sXDmL4L0tyDpNrrrw==", "dependencies": { - "@chakra-ui/dom-utils": "2.0.3", - "@chakra-ui/react-use-event-listener": "2.0.4" + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-callback-ref": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", - "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-controllable-state": { + "node_modules/@chakra-ui/event-utils": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", - "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", - "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" - }, - "peerDependencies": { - "react": ">=18" - } + "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", + "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" }, - "node_modules/@chakra-ui/react-use-disclosure": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", - "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", + "node_modules/@chakra-ui/focus-lock": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", + "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/dom-utils": "2.0.3", + "react-focus-lock": "^2.9.1" }, "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-event-listener": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", - "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", + "node_modules/@chakra-ui/form-control": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", + "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-focus-effect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", - "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", + "node_modules/@chakra-ui/hooks": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.0.11.tgz", + "integrity": "sha512-mYN4u9lbjDjEr/VucrVcLGg/sIO6gA9ZprcT3n9CBGSWt3xih7fCOJmE+yRcCNbL7335AMrv7a/M5Q30aRArcA==", "dependencies": { - "@chakra-ui/dom-utils": "2.0.3", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4" + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/utils": "2.0.11", + "compute-scroll-into-view": "1.0.14", + "copy-to-clipboard": "3.3.1" }, "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-focus-on-pointer-down": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", - "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", + "node_modules/@chakra-ui/icon": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", + "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", "dependencies": { - "@chakra-ui/react-use-event-listener": "2.0.4" + "@chakra-ui/shared-utils": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-interval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", - "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", + "node_modules/@chakra-ui/image": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", + "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-latest-ref": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", - "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-merge-refs": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", - "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-outside-click": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", - "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", + "node_modules/@chakra-ui/input": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.11.tgz", + "integrity": "sha512-kaV0VCz6/yzoCKQnh/tMUVgh+Rp6EnM+WzJ37SVX1gDvErON2bmmVLU45BiRoWUcd50wOhDlpsNVUWP0sLlCDA==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-pan-event": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", - "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", + "node_modules/@chakra-ui/layout": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.8.tgz", + "integrity": "sha512-pcNUNgMh+e4wepNOlCg5iDrxGg4VFBpqZPmSHoP4TyPN2ddEnDRLoMLaREMoX7gEVyTsqEFOFg+wa3JZK32H4A==", "dependencies": { - "@chakra-ui/event-utils": "2.0.5", - "@chakra-ui/react-use-latest-ref": "2.0.2", - "framesync": "5.3.0" + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-previous": { + "node_modules/@chakra-ui/lazy-utils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", - "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", - "peerDependencies": { - "react": ">=18" - } + "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", + "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" }, - "node_modules/@chakra-ui/react-use-safe-layout-effect": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", - "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", + "node_modules/@chakra-ui/live-region": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", + "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-size": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", - "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", + "node_modules/@chakra-ui/media-query": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", + "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", "dependencies": { - "@zag-js/element-size": "0.1.0" + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/react-env": "2.0.10" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-timeout": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", - "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", + "node_modules/@chakra-ui/menu": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.1.tgz", + "integrity": "sha512-9fpCyV3vufLV5Rvv/oYC3LyCIkNqh0bEdYFVOLiqCZ6mt6NLFxL2jgE25nROYfDXQuBkY0qPC9IopYU198G4nw==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-outside-click": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/transition": "2.0.10" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-update-effect": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", - "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-utils": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", - "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", + "node_modules/@chakra-ui/modal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.1.tgz", + "integrity": "sha512-+zfiUG/yZqUQ0wY7syoZg01cpBf54lbKUe7+ANEx558UQGbsI4bbcHSkY9l5lsprQ8teInvhjb6BekeCA0e7TA==", "dependencies": { - "@chakra-ui/utils": "2.0.11" + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/focus-lock": "2.0.12", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.10", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.5.4" }, "peerDependencies": { - "react": ">=18" + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@chakra-ui/select": { + "node_modules/@chakra-ui/number-input": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", - "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", + "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", "dependencies": { - "@chakra-ui/form-control": "2.0.11" + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-interval": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/shared-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", - "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" + "node_modules/@chakra-ui/number-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", + "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" }, - "node_modules/@chakra-ui/skeleton": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", - "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "node_modules/@chakra-ui/object-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", + "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + }, + "node_modules/@chakra-ui/pin-input": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.14.tgz", + "integrity": "sha512-gFNlTUjU1xIuOErR/d/HrNNh1mS0erjNJSt5C6RU/My4lShzgCczmwnil7TuEx3k7lPqHKLEf/CGeCxBSUjaGA==", "dependencies": { - "@chakra-ui/media-query": "3.2.7", - "@chakra-ui/react-use-previous": "2.0.2" + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/slider": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", - "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "node_modules/@chakra-ui/popover": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", + "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", "dependencies": { - "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", "@chakra-ui/react-context": "2.0.4", "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-latest-ref": "2.0.2", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-pan-event": "2.0.5", - "@chakra-ui/react-use-size": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4" + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/spinner": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", - "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", + "node_modules/@chakra-ui/popper": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", + "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", + "dependencies": { + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@popperjs/core": "^2.9.3" + }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/stat": { + "node_modules/@chakra-ui/portal": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", + "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/progress": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", - "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", + "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.11.tgz", + "integrity": "sha512-2OwxGxI6W757QpDB6b++B4b2+t0oBgaQdHnd4/y35n3+mOFj++Wg7XpW4/iDHn+x3LkM+X3NIgdBWQFlmGx+6w==", "dependencies": { - "@chakra-ui/icon": "3.0.11", "@chakra-ui/react-context": "2.0.4" }, "peerDependencies": { @@ -1330,884 +1629,906 @@ "react": ">=18" } }, - "node_modules/@chakra-ui/styled-system": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", - "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", + "node_modules/@chakra-ui/provider": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.19.tgz", + "integrity": "sha512-V+p0OePre0OgYmNxLbfiPWWbzaJ/EM2sfaRtD7E6ZA4TjUl2m4pWdC6OPMOiklu7EALfSgVk9X6Jh5pc+moH1g==", "dependencies": { - "csstype": "^3.0.11", - "lodash.mergewith": "4.6.2" + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/system": "2.2.12", + "@chakra-ui/utils": "2.0.11" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@chakra-ui/switch": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.13.tgz", - "integrity": "sha512-Ikj0L+SLLs/SnfGCiUChaldLIr/aizA1Q9D5+X6LtxpBnixFK/+fNXU+3juPDi9G1IFuNz2IAG51souO7C4nSQ==", + "node_modules/@chakra-ui/radio": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", + "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", "dependencies": { - "@chakra-ui/checkbox": "2.2.1" + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@zag-js/focus-visible": "0.1.0" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/system": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.2.12.tgz", - "integrity": "sha512-I7hFQswp8tG6ogjEMFs5TsCItdCYuNxpLAULgUrLdOlsQeNnHNQhlL4zpIfD+VzguhsNy5lisbegAMKjdghTYg==", + "node_modules/@chakra-ui/react": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.5.tgz", + "integrity": "sha512-bQDRV23M3IvF0+AorTvqJmG/4T6KKQIb+1XGA2RyxonoSHVt89HbN3qnygHJw06Sdgpclxdbr/1qZ4o8+SMbpA==", "dependencies": { - "@chakra-ui/color-mode": "2.1.9", - "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/accordion": "2.1.1", + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/avatar": "2.1.1", + "@chakra-ui/breadcrumb": "2.0.10", + "@chakra-ui/button": "2.0.11", + "@chakra-ui/checkbox": "2.2.1", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/control-box": "2.0.10", + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/editable": "2.0.12", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/hooks": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/image": "2.0.11", + "@chakra-ui/input": "2.0.11", + "@chakra-ui/layout": "2.1.8", + "@chakra-ui/live-region": "2.0.10", + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/menu": "2.1.1", + "@chakra-ui/modal": "2.2.1", + "@chakra-ui/number-input": "2.0.12", + "@chakra-ui/pin-input": "2.0.14", + "@chakra-ui/popover": "2.1.1", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/progress": "2.0.11", + "@chakra-ui/provider": "2.0.19", + "@chakra-ui/radio": "2.0.12", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/select": "2.0.12", + "@chakra-ui/skeleton": "2.0.17", + "@chakra-ui/slider": "2.0.12", + "@chakra-ui/spinner": "2.0.10", + "@chakra-ui/stat": "2.0.11", "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/switch": "2.0.13", + "@chakra-ui/system": "2.2.12", + "@chakra-ui/table": "2.0.11", + "@chakra-ui/tabs": "2.1.3", + "@chakra-ui/tag": "2.0.11", + "@chakra-ui/textarea": "2.0.12", + "@chakra-ui/theme": "2.1.13", + "@chakra-ui/toast": "3.0.13", + "@chakra-ui/tooltip": "2.2.0", + "@chakra-ui/transition": "2.0.10", "@chakra-ui/utils": "2.0.11", - "react-fast-compare": "3.2.0" + "@chakra-ui/visually-hidden": "2.0.11" }, "peerDependencies": { "@emotion/react": "^11.0.0", "@emotion/styled": "^11.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/react-children-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.2.tgz", + "integrity": "sha512-mRTGAZ3DBXB3hgVwS2DVJe3Nlc0qGvMN0PAo4tD/3fj2op2IwspLcYPAWC5D/rI2xj2JlwE6szAtbvxdAfLCNw==" + }, + "node_modules/@chakra-ui/react-context": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", + "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/table": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", - "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", - "dependencies": { - "@chakra-ui/react-context": "2.0.4" - }, + "node_modules/@chakra-ui/react-env": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", + "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/tabs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.3.tgz", - "integrity": "sha512-9gUcj49LMt5QQnfJHR/ctr9VPttJ97CtQWuH2Irjb3RXkq1TRrz6wjythPImNQUv1/DYyXp2jsUhoEQc4Oz14Q==", - "dependencies": { - "@chakra-ui/clickable": "2.0.10", - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" - }, + "node_modules/@chakra-ui/react-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", + "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/tag": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", - "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", + "node_modules/@chakra-ui/react-use-animation-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", + "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", "dependencies": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4" + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/textarea": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", - "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "node_modules/@chakra-ui/react-use-callback-ref": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", + "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-controllable-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", + "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", "dependencies": { - "@chakra-ui/form-control": "2.0.11" + "@chakra-ui/react-use-callback-ref": "2.0.4" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/theme": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.13.tgz", - "integrity": "sha512-qbrrvn9JstyLFV2qyhwgnhwzVs4zSJ4PcS3ScL8kafXJazTRU6onbCcjEZ5mVCw6z8uEz3jcE8Y5KIhVzaB+Xw==", + "node_modules/@chakra-ui/react-use-disclosure": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", + "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", "dependencies": { - "@chakra-ui/anatomy": "2.0.7", - "@chakra-ui/theme-tools": "2.0.12" + "@chakra-ui/react-use-callback-ref": "2.0.4" }, "peerDependencies": { - "@chakra-ui/styled-system": ">=2.0.0" + "react": ">=18" } }, - "node_modules/@chakra-ui/theme-tools": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", - "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", + "node_modules/@chakra-ui/react-use-event-listener": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", + "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", "dependencies": { - "@chakra-ui/anatomy": "2.0.7", - "@ctrl/tinycolor": "^3.4.0" + "@chakra-ui/react-use-callback-ref": "2.0.4" }, "peerDependencies": { - "@chakra-ui/styled-system": ">=2.0.0" + "react": ">=18" } }, - "node_modules/@chakra-ui/toast": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-3.0.13.tgz", - "integrity": "sha512-5GADso5l5Tv1PAL1iocEneLs6U7I8HHMHSMvWdPFSmmJJh0XCH3fboh0C9LiFNIcnEGJmn+A5yGc4vjedA0h2A==", + "node_modules/@chakra-ui/react-use-focus-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", + "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", "dependencies": { - "@chakra-ui/alert": "2.0.11", - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-use-timeout": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/theme": "2.1.13" + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" }, "peerDependencies": { - "@chakra-ui/system": "2.2.12", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" + "react": ">=18" } }, - "node_modules/@chakra-ui/tooltip": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", - "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", + "node_modules/@chakra-ui/react-use-focus-on-pointer-down": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", + "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", "dependencies": { - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@chakra-ui/react-use-event-listener": "2.0.4" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/transition": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.10.tgz", - "integrity": "sha512-Tkkne8pIIY7f95TKt2aH+IAuQqzHmEt+ICPqvg74QbmIpKE5ptX0cd+P3swBANw4ACnJcCc2vWIaKmVBQ9clLw==", - "peerDependencies": { - "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/utils": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", - "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", + "node_modules/@chakra-ui/react-use-interval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", + "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", "dependencies": { - "@types/lodash.mergewith": "4.6.6", - "css-box-model": "1.2.1", - "framesync": "5.3.0", - "lodash.mergewith": "4.6.2" + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@chakra-ui/visually-hidden": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", - "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", + "node_modules/@chakra-ui/react-use-latest-ref": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", + "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@ctrl/tinycolor": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", - "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", - "engines": { - "node": ">=10" + "node_modules/@chakra-ui/react-use-merge-refs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", + "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@emotion/babel-plugin": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", - "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "node_modules/@chakra-ui/react-use-outside-click": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", + "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.17.12", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/serialize": "^1.1.1", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.1.3" + "@chakra-ui/react-use-callback-ref": "2.0.4" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "react": ">=18" } }, - "node_modules/@emotion/cache": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", - "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", + "node_modules/@chakra-ui/react-use-pan-event": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", + "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", "dependencies": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.3" + "@chakra-ui/event-utils": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "framesync": "5.3.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@emotion/hash": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", - "dependencies": { - "@emotion/memoize": "^0.8.0" + "node_modules/@chakra-ui/react-use-previous": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", + "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@emotion/memoize": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + "node_modules/@chakra-ui/react-use-safe-layout-effect": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", + "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", + "peerDependencies": { + "react": ">=18" + } }, - "node_modules/@emotion/react": { - "version": "11.10.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", - "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", + "node_modules/@chakra-ui/react-use-size": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", + "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.0", - "@emotion/cache": "^11.10.0", - "@emotion/serialize": "^1.1.0", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "hoist-non-react-statics": "^3.3.1" + "@zag-js/element-size": "0.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/react": { - "optional": true - } + "react": ">=18" } }, - "node_modules/@emotion/serialize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", - "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "node_modules/@chakra-ui/react-use-timeout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", + "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", "dependencies": { - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/unitless": "^0.8.0", - "@emotion/utils": "^1.2.0", - "csstype": "^3.0.2" + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + "node_modules/@chakra-ui/react-use-update-effect": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", + "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", + "peerDependencies": { + "react": ">=18" + } }, - "node_modules/@emotion/styled": { - "version": "11.10.4", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", - "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", + "node_modules/@chakra-ui/react-utils": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", + "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.0", - "@emotion/is-prop-valid": "^1.2.0", - "@emotion/serialize": "^1.1.0", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0" + "@chakra-ui/utils": "2.0.11" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" + "react": ">=18" + } + }, + "node_modules/@chakra-ui/select": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", + "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11" }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/react": { - "optional": true - } + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@emotion/unitless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + "node_modules/@chakra-ui/shared-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", + "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "node_modules/@chakra-ui/skeleton": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", + "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "dependencies": { + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/react-use-previous": "2.0.2" + }, "peerDependencies": { - "react": ">=16.8.0" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + "node_modules/@chakra-ui/slider": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", + "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "dependencies": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-pan-event": "2.0.5", + "@chakra-ui/react-use-size": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } }, - "node_modules/@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + "node_modules/@chakra-ui/spinner": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", + "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", - "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "node_modules/@chakra-ui/stat": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", + "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", + "dependencies": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", - "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@chakra-ui/styled-system": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", + "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", + "dependencies": { + "csstype": "^3.0.11", + "lodash.mergewith": "4.6.2" } }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, + "node_modules/@chakra-ui/switch": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.13.tgz", + "integrity": "sha512-Ikj0L+SLLs/SnfGCiUChaldLIr/aizA1Q9D5+X6LtxpBnixFK/+fNXU+3juPDi9G1IFuNz2IAG51souO7C4nSQ==", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@chakra-ui/checkbox": "2.2.1" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, + "node_modules/@chakra-ui/system": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.2.12.tgz", + "integrity": "sha512-I7hFQswp8tG6ogjEMFs5TsCItdCYuNxpLAULgUrLdOlsQeNnHNQhlL4zpIfD+VzguhsNy5lisbegAMKjdghTYg==", "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" + "@chakra-ui/color-mode": "2.1.9", + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/utils": "2.0.11", + "react-fast-compare": "3.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/@chakra-ui/table": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", + "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", + "dependencies": { + "@chakra-ui/react-context": "2.0.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@heroicons/react": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.13.tgz", - "integrity": "sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==", + "node_modules/@chakra-ui/tabs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.3.tgz", + "integrity": "sha512-9gUcj49LMt5QQnfJHR/ctr9VPttJ97CtQWuH2Irjb3RXkq1TRrz6wjythPImNQUv1/DYyXp2jsUhoEQc4Oz14Q==", + "dependencies": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, "peerDependencies": { - "react": ">= 16" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, + "node_modules/@chakra-ui/tag": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", + "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" }, - "engines": { - "node": ">=10.10.0" + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" + "node_modules/@chakra-ui/textarea": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", + "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "node_modules/@chakra-ui/theme": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.13.tgz", + "integrity": "sha512-qbrrvn9JstyLFV2qyhwgnhwzVs4zSJ4PcS3ScL8kafXJazTRU6onbCcjEZ5mVCw6z8uEz3jcE8Y5KIhVzaB+Xw==", "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@chakra-ui/anatomy": "2.0.7", + "@chakra-ui/theme-tools": "2.0.12" }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "node_modules/@chakra-ui/theme-tools": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", + "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@chakra-ui/anatomy": "2.0.7", + "@ctrl/tinycolor": "^3.4.0" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.0.0" } }, - "node_modules/@motionone/animation": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", - "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", + "node_modules/@chakra-ui/toast": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-3.0.13.tgz", + "integrity": "sha512-5GADso5l5Tv1PAL1iocEneLs6U7I8HHMHSMvWdPFSmmJJh0XCH3fboh0C9LiFNIcnEGJmn+A5yGc4vjedA0h2A==", "dependencies": { - "@motionone/easing": "^10.14.0", - "@motionone/types": "^10.14.0", - "@motionone/utils": "^10.14.0", - "tslib": "^2.3.1" + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-use-timeout": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.13" + }, + "peerDependencies": { + "@chakra-ui/system": "2.2.12", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@motionone/animation/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/@motionone/dom": { - "version": "10.13.1", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", - "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", + "node_modules/@chakra-ui/tooltip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", + "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", "dependencies": { - "@motionone/animation": "^10.13.1", - "@motionone/generators": "^10.13.1", - "@motionone/types": "^10.13.0", - "@motionone/utils": "^10.13.1", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@motionone/dom/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/@motionone/easing": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", - "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", - "dependencies": { - "@motionone/utils": "^10.14.0", - "tslib": "^2.3.1" + "node_modules/@chakra-ui/transition": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.10.tgz", + "integrity": "sha512-Tkkne8pIIY7f95TKt2aH+IAuQqzHmEt+ICPqvg74QbmIpKE5ptX0cd+P3swBANw4ACnJcCc2vWIaKmVBQ9clLw==", + "peerDependencies": { + "framer-motion": ">=4.0.0", + "react": ">=18" } }, - "node_modules/@motionone/easing/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/@motionone/generators": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", - "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", + "node_modules/@chakra-ui/utils": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", + "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", "dependencies": { - "@motionone/types": "^10.14.0", - "@motionone/utils": "^10.14.0", - "tslib": "^2.3.1" + "@types/lodash.mergewith": "4.6.6", + "css-box-model": "1.2.1", + "framesync": "5.3.0", + "lodash.mergewith": "4.6.2" } }, - "node_modules/@motionone/generators/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/@motionone/types": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", - "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" - }, - "node_modules/@motionone/utils": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", - "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", - "dependencies": { - "@motionone/types": "^10.14.0", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" + "node_modules/@chakra-ui/visually-hidden": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", + "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@motionone/utils/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/@mswjs/cookies": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz", - "integrity": "sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "@types/set-cookie-parser": "^2.4.0", - "set-cookie-parser": "^2.4.6" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@mswjs/interceptors": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.6.tgz", - "integrity": "sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ==", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "dependencies": { - "@open-draft/until": "^1.0.3", - "@types/debug": "^4.1.7", - "@xmldom/xmldom": "^0.8.3", - "debug": "^4.3.3", - "headers-polyfill": "^3.1.0", - "outvariant": "^1.2.1", - "strict-event-emitter": "^0.2.4", - "web-encoding": "^1.1.5" - }, + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", "engines": { - "node": ">=14" + "node": ">=10" } }, - "node_modules/@nestjs/common": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", - "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", - "dev": true, + "node_modules/@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", "dependencies": { - "axios": "0.26.1", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" }, "peerDependencies": { - "cache-manager": "*", - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "cache-manager": { - "optional": true - }, - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } + "@babel/core": "^7.0.0" } }, - "node_modules/@nestjs/common/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dev": true, + "node_modules/@emotion/cache": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", + "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", "dependencies": { - "follow-redirects": "^1.14.8" + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.1", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.1.3" } }, - "node_modules/@nestjs/common/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true + "node_modules/@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" }, - "node_modules/@nestjs/core": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", - "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", - "dev": true, - "hasInstallScript": true, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", "dependencies": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "3.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "@emotion/memoize": "^0.8.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "node_modules/@emotion/react": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", + "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/cache": "^11.10.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0", - "@nestjs/websockets": "^8.0.0", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" + "@babel/core": "^7.0.0", + "react": ">=16.8.0" }, "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { + "@babel/core": { "optional": true }, - "@nestjs/websockets": { + "@types/react": { "optional": true } } }, - "node_modules/@nestjs/core/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true + "node_modules/@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, + "node_modules/@emotion/sheet": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", + "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + }, + "node_modules/@emotion/styled": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", + "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@babel/core": "^7.0.0", + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "cpu": [ + "arm" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "bin": { - "opencollective": "bin/opencollective.js" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@nuxtjs/opencollective/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nuxtjs/opencollective/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nuxtjs/opencollective/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@graphql-codegen/add": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-3.2.1.tgz", + "integrity": "sha512-w82H/evh8SSGoD3K6K/Oh3kqSdbuU+TgHqMYmmHFxtH692v2xhN/cu1s/TotBQ7r4mO7OQutze7dde2tZEXGEQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@graphql-codegen/plugin-helpers": "^2.6.2", + "tslib": "~2.4.0" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@nuxtjs/opencollective/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@open-draft/until": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", - "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", + "node_modules/@graphql-codegen/add/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/@openapitools/openapi-generator-cli": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", - "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", + "node_modules/@graphql-codegen/cli": { + "version": "2.13.11", + "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.13.11.tgz", + "integrity": "sha512-PJF36a1i6M7Btj1kB4PWWzBUO3u2BJzsd/6KXxRmEugcxrbaCnbTDDktopy0CZYKdqaFbXaowwbRY8Tk8DV99Q==", "dev": true, - "hasInstallScript": true, "dependencies": { - "@nestjs/common": "8.4.4", - "@nestjs/core": "8.4.4", - "@nuxtjs/opencollective": "0.3.2", - "chalk": "4.1.2", - "commander": "8.3.0", - "compare-versions": "4.1.3", - "concurrently": "6.5.1", - "console.table": "0.10.0", - "fs-extra": "10.0.1", - "glob": "7.1.6", - "inquirer": "8.2.2", - "lodash": "4.17.21", - "reflect-metadata": "0.1.13", - "rxjs": "7.5.5", - "tslib": "2.0.3" + "@babel/generator": "^7.18.13", + "@babel/template": "^7.18.10", + "@babel/types": "^7.18.13", + "@graphql-codegen/core": "2.6.5", + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/apollo-engine-loader": "^7.3.6", + "@graphql-tools/code-file-loader": "^7.3.1", + "@graphql-tools/git-loader": "^7.2.1", + "@graphql-tools/github-loader": "^7.3.6", + "@graphql-tools/graphql-file-loader": "^7.5.0", + "@graphql-tools/json-file-loader": "^7.4.1", + "@graphql-tools/load": "7.8.0", + "@graphql-tools/prisma-loader": "^7.2.7", + "@graphql-tools/url-loader": "^7.13.2", + "@graphql-tools/utils": "^8.9.0", + "@whatwg-node/fetch": "^0.3.0", + "ansi-escapes": "^4.3.1", + "chalk": "^4.1.0", + "chokidar": "^3.5.2", + "cosmiconfig": "^7.0.0", + "cosmiconfig-typescript-loader": "4.1.1", + "debounce": "^1.2.0", + "detect-indent": "^6.0.0", + "graphql-config": "4.3.6", + "inquirer": "^8.0.0", + "is-glob": "^4.0.1", + "json-to-pretty-yaml": "^1.2.2", + "listr2": "^4.0.5", + "log-symbols": "^4.0.0", + "mkdirp": "^1.0.4", + "shell-quote": "^1.7.3", + "string-env-interpolation": "^1.0.1", + "ts-log": "^2.2.3", + "tslib": "^2.4.0", + "yaml": "^1.10.0", + "yargs": "^17.0.0" }, "bin": { - "openapi-generator-cli": "main.js" - }, - "engines": { - "node": ">=10.0.0" + "gql-gen": "cjs/bin.js", + "graphql-code-generator": "cjs/bin.js", + "graphql-codegen": "cjs/bin.js", + "graphql-codegen-esm": "esm/bin.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/openapi_generator" + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/ansi-styles": { + "node_modules/@graphql-codegen/cli/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -2222,7 +2543,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/chalk": { + "node_modules/@graphql-codegen/cli/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -2238,7 +2559,21 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/color-convert": { + "node_modules/@graphql-codegen/cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@graphql-codegen/cli/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -2250,13 +2585,13 @@ "node": ">=7.0.0" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/color-name": { + "node_modules/@graphql-codegen/cli/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/has-flag": { + "node_modules/@graphql-codegen/cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -2265,7 +2600,7 @@ "node": ">=8" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/supports-color": { + "node_modules/@graphql-codegen/cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -2277,1095 +2612,1436 @@ "node": ">=8" } }, - "node_modules/@pkgr/utils": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", - "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "node_modules/@graphql-codegen/cli/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-codegen/cli/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "is-glob": "^4.0.3", - "open": "^8.4.0", - "picocolors": "^1.0.0", - "tiny-glob": "^0.2.9", - "tslib": "^2.4.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "node": ">=12" + } + }, + "node_modules/@graphql-codegen/cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@graphql-codegen/client-preset": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-1.1.3.tgz", + "integrity": "sha512-u4h6X1AcaN93dItnvQEtQjSTpth140Ceac2W3gUNR3IWfFGKLr9HvjNsiIteIFulcUJvLdIAVTfbnO8MUC1Twg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/template": "^7.15.4", + "@graphql-codegen/add": "^3.2.1", + "@graphql-codegen/gql-tag-operations": "1.5.6", + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/typed-document-node": "^2.3.6", + "@graphql-codegen/typescript": "^2.8.1", + "@graphql-codegen/typescript-operations": "^2.5.6", + "@graphql-codegen/visitor-plugin-common": "^2.13.1", + "@graphql-tools/utils": "^8.8.0", + "@graphql-typed-document-node/core": "3.1.1", + "tslib": "~2.4.0" }, - "funding": { - "url": "https://opencollective.com/unts" + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@pkgr/utils/node_modules/tslib": { + "node_modules/@graphql-codegen/client-preset/node_modules/tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "node_modules/@graphql-codegen/core": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.6.5.tgz", + "integrity": "sha512-oSbM8vINFxcV1GUasJTDIemMpEG1t6NkBG8odQCt/3ZExCYmoviHhG9vJB89QqJeU5W06qQB6SJn/dg/gv5Aqg==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/schema": "^9.0.0", + "@graphql-tools/utils": "9.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" + "node_modules/@graphql-codegen/core/node_modules/@graphql-tools/utils": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.0.0.tgz", + "integrity": "sha512-kaCwyWnURxMsYbxzkfylLqFFelu83jKk3BJOOy0GIuxEtgXVS9v7Y/tojljo69Q+jaZ2YxAi3+d8IpM+hx768A==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "node_modules/@graphql-codegen/core/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "node_modules/@graphql-codegen/gql-tag-operations": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-1.5.6.tgz", + "integrity": "sha512-SUeiBnVbV893paHud0Tr05hbZUMBeig6zcDoOw+9xoEivJUlCorOCXB3dXuUoRj+npOMH01IaFeGRbdiMm/RQg==", "dev": true, "dependencies": { - "@types/chai": "*" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "node_modules/@graphql-codegen/gql-tag-operations/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "node_modules/@graphql-codegen/plugin-helpers": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", + "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", "dev": true, "dependencies": { - "@types/ms": "*" + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@types/js-levenshtein": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz", - "integrity": "sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==", + "node_modules/@graphql-codegen/plugin-helpers/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "node_modules/@graphql-codegen/schema-ast": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-2.5.1.tgz", + "integrity": "sha512-tewa5DEKbglWn7kYyVBkh3J8YQ5ALqAMVmZwiVFIGOao5u66nd+e4HuFqp0u+Jpz4SJGGi0ap/oFrEvlqLjd2A==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-tools/utils": "^8.8.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "node_modules/@graphql-codegen/schema-ast/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/@types/lodash": { - "version": "4.14.188", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.188.tgz", - "integrity": "sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==" - }, - "node_modules/@types/lodash.mergewith": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz", - "integrity": "sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==", + "node_modules/@graphql-codegen/typed-document-node": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-2.3.6.tgz", + "integrity": "sha512-uJqBNj9z/5iIUgLwXsyWmnBaCzRtK+OiZsknTQmjzx/BzKTXK5lrbn06n4KK690wqkelpdZplTtww34ExmHG9Q==", + "dev": true, "dependencies": { - "@types/lodash": "*" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "node_modules/@graphql-codegen/typed-document-node/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "devOptional": true - }, - "node_modules/@types/react": { - "version": "18.0.25", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz", - "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==", - "devOptional": true, + "node_modules/@graphql-codegen/typescript": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.8.1.tgz", + "integrity": "sha512-kweV1DOOH2blvMheVL55TT0s9bxkmF/zijN9mdk9pRD20i/rI/46qbh8fNKqy/PV12vZOmZGNL6tigdghG2bqg==", + "dev": true, "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/schema-ast": "^2.5.1", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@types/react-dom": { - "version": "18.0.8", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.8.tgz", - "integrity": "sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==", + "node_modules/@graphql-codegen/typescript-operations": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-2.5.6.tgz", + "integrity": "sha512-7WqOsVMTUXf+tdt0jGOBuQINLYjPIGlcsnkzXQSPJ7rSGVj99VobVuwgmAeFmJctZ3lgwx3gjPZ0dyCIOBc2/A==", "dev": true, "dependencies": { - "@types/react": "*" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/typescript": "^2.8.1", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "devOptional": true + "node_modules/@graphql-codegen/typescript-operations/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "node_modules/@graphql-codegen/typescript/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/@types/set-cookie-parser": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz", - "integrity": "sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==", + "node_modules/@graphql-codegen/visitor-plugin-common": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", + "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", "dev": true, "dependencies": { - "@types/node": "*" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/optimize": "^1.3.0", + "@graphql-tools/relay-operation-optimizer": "^6.5.0", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.42.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", - "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", + "node_modules/@graphql-codegen/visitor-plugin-common/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/apollo-engine-loader": { + "version": "7.3.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.3.18.tgz", + "integrity": "sha512-Qd1juunK4kH3xgF1aYJIcy8vD/f36Nm713r3ZaY2OKxc1+8d9PIYUlhIvcVUP1SzVxNWLbZm+q918QWFmI9p8A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.42.1", - "@typescript-eslint/type-utils": "5.42.1", - "@typescript-eslint/utils": "5.42.1", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/utils": "9.1.0", + "@whatwg-node/fetch": "^0.5.0", + "tslib": "^2.4.0" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "tslib": "^2.4.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.42.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz", - "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==", + "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.42.1", - "@typescript-eslint/types": "5.42.1", - "@typescript-eslint/typescript-estree": "5.42.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.42.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", - "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", + "node_modules/@graphql-tools/apollo-engine-loader/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/batch-execute": { + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.11.tgz", + "integrity": "sha512-TWvTSJOG38y5GzKO8TLkURT0XJrQyCCwgCq/kr3YQHkw8BLwLbj3N6Pzp88oMJwAMfYOVCWoN4wU6DigUbOrAw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.1", - "@typescript-eslint/visitor-keys": "5.42.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@graphql-tools/utils": "9.1.0", + "dataloader": "2.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.42.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", - "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", + "node_modules/@graphql-tools/batch-execute/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.42.1", - "@typescript-eslint/utils": "5.42.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "tslib": "^2.4.0" }, "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.42.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", - "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", + "node_modules/@graphql-tools/batch-execute/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/code-file-loader": { + "version": "7.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-7.3.11.tgz", + "integrity": "sha512-OMngFSlxthssPFl/VJG3qISXyqjuNF/3fqXFXL6wsCSTve3t13X8Y0oWr3s20fMnJhZNHq0CVtDZutmSUPX7Xw==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.42.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", - "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", + "node_modules/@graphql-tools/code-file-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.1", - "@typescript-eslint/visitor-keys": "5.42.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "tslib": "^2.4.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/@graphql-tools/code-file-loader/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/delegate": { + "version": "9.0.15", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-9.0.15.tgz", + "integrity": "sha512-55BTS/EDr/tt+fifY5pM8HwF9fYZo0ukv90Udan1mWnyQTZpBTRhg0MUKnWRl9vcaPkDZIkfJaG2sraFM5gZyw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@graphql-tools/batch-execute": "8.5.11", + "@graphql-tools/executor": "0.0.7", + "@graphql-tools/schema": "9.0.9", + "@graphql-tools/utils": "9.1.0", + "dataloader": "2.1.0", + "tslib": "~2.4.0", + "value-or-promise": "1.0.11" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.42.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", - "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", + "node_modules/@graphql-tools/delegate/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.42.1", - "@typescript-eslint/types": "5.42.1", - "@typescript-eslint/typescript-estree": "5.42.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "tslib": "^2.4.0" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/@graphql-tools/delegate/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/executor": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-0.0.7.tgz", + "integrity": "sha512-NfTru2DjgvuRF1PlYBHFhfsUwNiNBsby8LPlvPtB5duizbw0rQW14h1RM2IfBowR0wH42NRAJZWEW8Nbvlf0Dg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@graphql-tools/utils": "9.1.0", + "@graphql-typed-document-node/core": "3.1.1", + "@repeaterjs/repeater": "3.0.4", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.42.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", - "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", + "node_modules/@graphql-tools/executor/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "tslib": "^2.4.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@vitejs/plugin-basic-ssl": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-0.1.2.tgz", - "integrity": "sha512-EdwCHnbkakR6YPupySZm1WoCDRPaw9c5jObAo2pCRv8Ja2TESFC6Sc8RUOcKuihfjARDfszbBf+YEQwHY9s9wg==", + "node_modules/@graphql-tools/executor/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/git-loader": { + "version": "7.2.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-7.2.11.tgz", + "integrity": "sha512-a/uL8PAgMcXV7wY3LjMXgTcrWt2iGpcYTRHVMN4QgwW9PTAOPcYjxZ9BfNPTEDZt/zk0Gd8YxgtCrg8ui+bLCg==", "dev": true, - "engines": { - "node": ">=14.6.0" + "dependencies": { + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "is-glob": "4.0.3", + "micromatch": "^4.0.4", + "tslib": "^2.4.0", + "unixify": "^1.0.0" }, "peerDependencies": { - "vite": "^3.0.0-beta.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@vitejs/plugin-react": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", - "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "node_modules/@graphql-tools/git-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-jsx": "^7.19.0", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-jsx-self": "^7.18.6", - "@babel/plugin-transform-react-jsx-source": "^7.19.6", - "magic-string": "^0.26.7", - "react-refresh": "^0.14.0" + "tslib": "^2.4.0" }, - "engines": { - "node": "^14.18.0 || >=16.0.0" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/git-loader/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/github-loader": { + "version": "7.3.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.3.18.tgz", + "integrity": "sha512-xQ7L+CWuA6vMCNDfXodCPCDFfoRL+LtFKqxhpA3wU8kVhWOm+QP3sJeVrRj2FAoIKHxcoUYsT4QflqKFj/vsQA==", + "dev": true, + "dependencies": { + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "@whatwg-node/fetch": "^0.5.0", + "tslib": "^2.4.0" }, "peerDependencies": { - "vite": "^3.0.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.6.tgz", - "integrity": "sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==", + "node_modules/@graphql-tools/github-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, - "engines": { - "node": ">=10.0.0" + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@zag-js/element-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz", - "integrity": "sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==" + "node_modules/@graphql-tools/github-loader/node_modules/@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "dependencies": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } }, - "node_modules/@zag-js/focus-visible": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz", - "integrity": "sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==" + "node_modules/@graphql-tools/github-loader/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", - "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "node_modules/@graphql-tools/graphql-file-loader": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.5.10.tgz", + "integrity": "sha512-G7/jO0v4sdKik0hyKo1XTXdJoOy6uU6enVvaiK07cVLXjf4+N08orP2ZeiRw6IUxYErPvZgOHJKAZZaeSjIF2A==", "dev": true, - "optional": true + "dependencies": { + "@graphql-tools/import": "6.7.11", + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "node_modules/@graphql-tools/graphql-file-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "tslib": "^2.4.0" }, - "engines": { - "node": ">=0.4.0" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/@graphql-tools/graphql-file-loader/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/graphql-tag-pluck": { + "version": "7.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.3.11.tgz", + "integrity": "sha512-BU7ArN8+tv0KG3I4cuMF7MOpaVVOuqF6tnAmMjFqTrYOOJaQeTzweSvy6qtdkHA/sFZuttLa7BHxvJv4B4xS9w==", "dev": true, + "dependencies": { + "@babel/parser": "^7.16.8", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" + }, "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "tslib": "^2.4.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/import": { + "version": "6.7.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.7.11.tgz", + "integrity": "sha512-hd3HqNE5JLnOwPcr48vnTShldzRr5sRqrxqj9ouzEnqXUC1Pu/tMqp7p3K8ZPeaMw9h8aiUBBhvNM2sbSW51dQ==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "@graphql-tools/utils": "9.1.0", + "resolve-from": "5.0.0", + "tslib": "^2.4.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/import/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@graphql-tools/import/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@graphql-tools/import/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/json-file-loader": { + "version": "7.4.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-7.4.11.tgz", + "integrity": "sha512-uxWpbI0sT9i3bUX50joJKMafI7Gnb7W62B8om/qaCkQUjN1UmJmAea+z0afEoko/SsTYbBlWiu8Kw1M0UuzyHQ==", + "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@graphql-tools/json-file-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "tslib": "^2.4.0" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@graphql-tools/json-file-loader/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/aria-hidden": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz", - "integrity": "sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==", + "node_modules/@graphql-tools/load": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.8.0.tgz", + "integrity": "sha512-l4FGgqMW0VOqo+NMYizwV8Zh+KtvVqOf93uaLo9wJ3sS3y/egPCgxPMDJJ/ufQZG3oZ/0oWeKt68qop3jY0yZg==", + "dev": true, "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@graphql-tools/schema": "9.0.4", + "@graphql-tools/utils": "8.12.0", + "p-limit": "3.1.0", + "tslib": "^2.4.0" }, "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "node_modules/@graphql-tools/load/node_modules/@graphql-tools/merge": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.6.tgz", + "integrity": "sha512-uUBokxXi89bj08P+iCvQk3Vew4vcfL5ZM6NTylWi8PIpoq4r5nJ625bRuN8h2uubEdRiH8ntN9M4xkd/j7AybQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0" }, - "engines": { - "node": ">=6.0" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "node_modules/@graphql-tools/load/node_modules/@graphql-tools/schema": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.4.tgz", + "integrity": "sha512-B/b8ukjs18fq+/s7p97P8L1VMrwapYc3N2KvdG/uNThSazRRn8GsBK0Nr+FH+mVKiUfb4Dno79e3SumZVoHuOQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" + "@graphql-tools/merge": "8.3.6", + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/@graphql-tools/load/node_modules/@graphql-tools/utils": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.12.0.tgz", + "integrity": "sha512-TeO+MJWGXjUTS52qfK4R8HiPoF/R7X+qmgtOYd8DTH0l6b+5Y/tlg5aGeUJefqImRq7nvi93Ms40k/Uz4D5CWw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "node_modules/@graphql-tools/load/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/merge": { + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.11.tgz", + "integrity": "sha512-IpZh8r8e8FycXaUv04xe5HQH9siD1tkS8MvaO8Wb2FaPXv15XSYP+Wsb2MUStpIqGfQxa6xY/+eEuxv+VqwXyg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/array.prototype.flatmap": { + "node_modules/@graphql-tools/merge/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/optimize": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.3.1.tgz", + "integrity": "sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "tslib": "^2.4.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "node_modules/@graphql-tools/optimize/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/prisma-loader": { + "version": "7.2.32", + "resolved": "https://registry.npmjs.org/@graphql-tools/prisma-loader/-/prisma-loader-7.2.32.tgz", + "integrity": "sha512-LCAEGtyjzuIUtR8Fua/YsQQZdK1qJhelIMn5weQ5s1R27utDwxYr36YmZkhU0cEQV6JMmXQnnSet+0hTm5sa9w==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "@graphql-tools/url-loader": "7.16.12", + "@graphql-tools/utils": "9.1.0", + "@types/js-yaml": "^4.0.0", + "@types/json-stable-stringify": "^1.0.32", + "@types/jsonwebtoken": "^8.5.0", + "chalk": "^4.1.0", + "debug": "^4.3.1", + "dotenv": "^16.0.0", + "graphql-request": "^5.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "isomorphic-fetch": "^3.0.0", + "js-yaml": "^4.0.0", + "json-stable-stringify": "^1.0.1", + "jsonwebtoken": "^8.5.1", + "lodash": "^4.17.20", + "scuid": "^1.1.0", + "tslib": "^2.4.0", + "yaml-ast-parser": "^0.0.43" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "node_modules/@graphql-tools/prisma-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/axe-core": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.1.tgz", - "integrity": "sha512-1exVbW0X1O/HSr/WMwnaweyqcWOgZgLiVxdLG34pvSQk4NlYQr9OUy0JLwuhFfuVNQzzqgH57eYzkFBCb3bIsQ==", + "node_modules/@graphql-tools/prisma-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "node_modules/@graphql-tools/prisma-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "node_modules/@graphql-tools/prisma-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "node_modules/@graphql-tools/prisma-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@graphql-tools/prisma-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10", - "npm": ">=6" + "node": ">=8" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/@graphql-tools/prisma-loader/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "node_modules/@graphql-tools/relay-operation-optimizer": { + "version": "6.5.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.11.tgz", + "integrity": "sha512-afIcawEBYnLN/A0oGIi4wKPCSduhYcTkNCbplnFpfm0NSpQ6CfMs30rJwUrsKhkRmTi7wIpOhFk8i1Xe46LT0w==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "dependencies": { + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/schema": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.9.tgz", + "integrity": "sha512-hwg8trUytO5ayQ8bzL3+sAyXcu2rhKt5pLXpLO0/TMTN2nXd3DBO4mqx+Ra4Er2mE/msInGQ5EmZbxVBPv+hSg==", "dev": true, "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "@graphql-tools/merge": "8.3.11", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@graphql-tools/schema/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/url-loader": { + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.16.12.tgz", + "integrity": "sha512-A+T10Co1+6zHoBrmpbJte9o/x6YgIEiiMbyByFAfRU9kDCQdz0c/YJI9NNWsvKLBHh8zaTRp/ZYk/HpJ0hVOxw==", + "dev": true, + "dependencies": { + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/delegate": "9.0.15", + "@graphql-tools/utils": "9.1.0", + "@graphql-tools/wrap": "9.2.11", + "@types/ws": "^8.0.0", + "@whatwg-node/fetch": "^0.5.0", + "dset": "^3.1.2", + "extract-files": "^11.0.0", + "graphql-ws": "^5.4.1", + "isomorphic-ws": "^5.0.0", + "meros": "^1.1.4", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.11", + "ws": "^8.3.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "tslib": "^2.4.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], + "node_modules/@graphql-tools/url-loader/node_modules/@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } + }, + "node_modules/@graphql-tools/url-loader/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/utils": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", + "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/@graphql-tools/utils/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-tools/wrap": { + "version": "9.2.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-9.2.11.tgz", + "integrity": "sha512-QzzyfUQ/roXh7F7Bk0xDOaX9Wp6yafIg3S+rkcSrWrGmxPckCp95YqAtoZLp5HE/XcoZNvw2vD110n0F9nOg6g==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "@graphql-tools/delegate": "9.0.15", + "@graphql-tools/schema": "9.0.9", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@graphql-tools/wrap/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "tslib": "^2.4.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } + "node_modules/@graphql-tools/wrap/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true }, - "node_modules/caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] + "node_modules/@graphql-typed-document-node/core": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" + "node_modules/@heroicons/react": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.13.tgz", + "integrity": "sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==", + "peerDependencies": { + "react": ">= 16" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=4" + "node": ">=10.10.0" } }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", "dependencies": { - "is-glob": "^4.0.1" + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" }, "engines": { - "node": ">= 6" + "node": ">=6.0.0" } }, - "node_modules/cli-cursor": { + "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.0.0" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" + "node_modules/@motionone/animation": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", + "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", + "dependencies": { + "@motionone/easing": "^10.14.0", + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@motionone/animation/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@motionone/dom": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", + "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", "dependencies": { - "color-name": "1.1.3" + "@motionone/animation": "^10.13.1", + "@motionone/generators": "^10.13.1", + "@motionone/types": "^10.13.0", + "@motionone/utils": "^10.13.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "node_modules/@motionone/dom/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/@motionone/easing": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", + "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" } }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" + "node_modules/@motionone/easing/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@motionone/generators": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", + "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", + "dependencies": { + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" } }, - "node_modules/compare-versions": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", - "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "node_modules/@motionone/generators/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@motionone/types": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", + "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" + }, + "node_modules/@motionone/utils": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", + "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", + "dependencies": { + "@motionone/types": "^10.14.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/utils/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@mswjs/cookies": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz", + "integrity": "sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==", + "dev": true, + "dependencies": { + "@types/set-cookie-parser": "^2.4.0", + "set-cookie-parser": "^2.4.6" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@mswjs/interceptors": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.6.tgz", + "integrity": "sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ==", + "dev": true, + "dependencies": { + "@open-draft/until": "^1.0.3", + "@types/debug": "^4.1.7", + "@xmldom/xmldom": "^0.8.3", + "debug": "^4.3.3", + "headers-polyfill": "^3.1.0", + "outvariant": "^1.2.1", + "strict-event-emitter": "^0.2.4", + "web-encoding": "^1.1.5" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nestjs/common": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", + "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", + "dev": true, + "dependencies": { + "axios": "0.26.1", + "iterare": "1.2.1", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "cache-manager": "*", + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "cache-manager": { + "optional": true + }, + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/common/node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", - "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" + "node_modules/@nestjs/core": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", + "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "object-hash": "3.0.0", + "path-to-regexp": "3.2.0", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0", + "@nestjs/microservices": "^8.0.0", + "@nestjs/platform-express": "^8.0.0", + "@nestjs/websockets": "^8.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, - "node_modules/concurrently": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", - "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", "dev": true, "dependencies": { "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" + "consola": "^2.15.0", + "node-fetch": "^2.6.1" }, "bin": { - "concurrently": "bin/concurrently.js" + "opencollective": "bin/opencollective.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=8.0.0", + "npm": ">=5.0.0" } }, - "node_modules/concurrently/node_modules/ansi-styles": { + "node_modules/@nuxtjs/opencollective/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -3380,7 +4056,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/concurrently/node_modules/chalk": { + "node_modules/@nuxtjs/opencollective/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -3396,19 +4072,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/color-convert": { + "node_modules/@nuxtjs/opencollective/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -3420,13 +4084,13 @@ "node": ">=7.0.0" } }, - "node_modules/concurrently/node_modules/color-name": { + "node_modules/@nuxtjs/opencollective/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/concurrently/node_modules/has-flag": { + "node_modules/@nuxtjs/opencollective/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -3435,1332 +4099,1455 @@ "node": ">=8" } }, - "node_modules/concurrently/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@nuxtjs/opencollective/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, - "node_modules/concurrently/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "node_modules/@open-draft/until": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", + "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", "dev": true }, - "node_modules/console.table": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", - "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "node_modules/@openapitools/openapi-generator-cli": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", + "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", "dev": true, + "hasInstallScript": true, "dependencies": { - "easy-table": "1.1.0" + "@nestjs/common": "8.4.4", + "@nestjs/core": "8.4.4", + "@nuxtjs/opencollective": "0.3.2", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.3", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.0.1", + "glob": "7.1.6", + "inquirer": "8.2.2", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.5.5", + "tslib": "2.0.3" + }, + "bin": { + "openapi-generator-cli": "main.js" }, "engines": { - "node": "> 0.10" + "node": ">=10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openapi_generator" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "node_modules/@openapitools/openapi-generator-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/copy-to-clipboard": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", - "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", "dependencies": { - "toggle-selection": "^1.0.6" - } - }, - "node_modules/core-js-pure": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", - "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", - "dev": true, - "hasInstallScript": true, + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "node_modules/@openapitools/openapi-generator-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/@openapitools/openapi-generator-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/css-box-model": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", - "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", - "dependencies": { - "tiny-invariant": "^1.0.6" + "node": ">=7.0.0" } }, - "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "node_modules/@openapitools/openapi-generator-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "node_modules/@openapitools/openapi-generator-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "node": ">=8" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@openapitools/openapi-generator-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=8" } }, - "node_modules/deep-eql": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", - "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", + "node_modules/@peculiar/asn1-schema": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.0.tgz", + "integrity": "sha512-DtNLAG4vmDrdSJFPe7rypkcj597chNQL7u+2dBtYo5mh7VW2+im6ke+O0NVr8W1f4re4C3F71LhoMb0Yxqa48Q==", "dev": true, "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/@peculiar/asn1-schema/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", "dev": true, "dependencies": { - "clone": "^1.0.2" + "tslib": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@peculiar/webcrypto": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.1.tgz", + "integrity": "sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==", "dev": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.0", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.1", + "webcrypto-core": "^1.7.4" + }, "engines": { - "node": ">=8" + "node": ">=10.12.0" } }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "node_modules/@peculiar/webcrypto/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", "dev": true, "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/unts" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" + "node_modules/@pkgr/utils/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + "node_modules/@repeaterjs/repeater": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", + "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==", + "dev": true }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/@stomp/stompjs": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", + "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@types/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", "dev": true, "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" + "@types/chai": "*" } }, - "node_modules/easy-table": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", - "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", "dev": true, - "optionalDependencies": { - "wcwidth": ">=1.0.1" + "dependencies": { + "@types/ms": "*" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + "node_modules/@types/js-levenshtein": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz", + "integrity": "sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==", + "dev": true }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", "dev": true }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/json-stable-stringify": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz", + "integrity": "sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" + "@types/node": "*" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/@types/lodash": { + "version": "4.14.188", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.188.tgz", + "integrity": "sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==" + }, + "node_modules/@types/lodash.mergewith": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz", + "integrity": "sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==", "dependencies": { - "is-arrayish": "^0.2.1" + "@types/lodash": "*" } }, - "node_modules/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "devOptional": true + }, + "node_modules/@types/react": { + "version": "18.0.25", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz", + "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.8.tgz", + "integrity": "sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/react": "*" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "devOptional": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/set-cookie-parser": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz", + "integrity": "sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==", "dev": true, "dependencies": { - "has": "^1.0.3" + "@types/node": "*" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/node": "*" } }, - "node_modules/esbuild": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", - "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", + "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.13", - "@esbuild/linux-loong64": "0.15.13", - "esbuild-android-64": "0.15.13", - "esbuild-android-arm64": "0.15.13", - "esbuild-darwin-64": "0.15.13", - "esbuild-darwin-arm64": "0.15.13", - "esbuild-freebsd-64": "0.15.13", - "esbuild-freebsd-arm64": "0.15.13", - "esbuild-linux-32": "0.15.13", - "esbuild-linux-64": "0.15.13", - "esbuild-linux-arm": "0.15.13", - "esbuild-linux-arm64": "0.15.13", - "esbuild-linux-mips64le": "0.15.13", - "esbuild-linux-ppc64le": "0.15.13", - "esbuild-linux-riscv64": "0.15.13", - "esbuild-linux-s390x": "0.15.13", - "esbuild-netbsd-64": "0.15.13", - "esbuild-openbsd-64": "0.15.13", - "esbuild-sunos-64": "0.15.13", - "esbuild-windows-32": "0.15.13", - "esbuild-windows-64": "0.15.13", - "esbuild-windows-arm64": "0.15.13" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/esbuild-android-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", - "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", - "cpu": [ - "x64" - ], + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", - "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", - "cpu": [ - "arm64" - ], + "node_modules/@typescript-eslint/parser": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz", + "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "debug": "^4.3.4" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", - "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", - "cpu": [ - "x64" - ], + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", - "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", - "cpu": [ - "arm64" - ], + "node_modules/@typescript-eslint/type-utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", + "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", - "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", - "cpu": [ - "x64" - ], + "node_modules/@typescript-eslint/types": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", - "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", - "cpu": [ - "arm64" - ], + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/esbuild-linux-32": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", - "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", - "cpu": [ - "ia32" - ], + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/esbuild-linux-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", - "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", - "cpu": [ - "x64" - ], + "node_modules/@typescript-eslint/utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", + "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", - "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", - "cpu": [ - "arm" - ], + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", - "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", - "cpu": [ - "arm64" - ], + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@typescript-eslint/types": "5.42.1", + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", - "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", - "cpu": [ - "mips64el" - ], + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-0.1.2.tgz", + "integrity": "sha512-EdwCHnbkakR6YPupySZm1WoCDRPaw9c5jObAo2pCRv8Ja2TESFC6Sc8RUOcKuihfjARDfszbBf+YEQwHY9s9wg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0-beta.0" } }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", - "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", - "cpu": [ - "ppc64" - ], + "node_modules/@vitejs/plugin-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", + "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-jsx": "^7.19.0", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.26.7", + "react-refresh": "^0.14.0" + }, "engines": { - "node": ">=12" + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^3.0.0" } }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", - "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", - "cpu": [ - "riscv64" - ], + "node_modules/@whatwg-node/fetch": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.3.2.tgz", + "integrity": "sha512-Bs5zAWQs0tXsLa4mRmLw7Psps1EN78vPtgcLpw3qPY8s6UYPUM67zFZ9cy+7tZ64PXhfwzxJn+m7RH2Lq48RNQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "event-target-polyfill": "^0.0.3", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.8.0", + "web-streams-polyfill": "^3.2.0" } }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", - "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", - "cpu": [ - "s390x" - ], + "node_modules/@xmldom/xmldom": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.6.tgz", + "integrity": "sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=10.0.0" } }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", - "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", - "cpu": [ - "x64" - ], + "node_modules/@zag-js/element-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz", + "integrity": "sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==" + }, + "node_modules/@zag-js/focus-visible": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz", + "integrity": "sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==" + }, + "node_modules/@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "optional": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6.5" } }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", - "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", - "cpu": [ - "x64" - ], + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", - "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", - "cpu": [ - "x64" - ], + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/esbuild-windows-32": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", - "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", - "cpu": [ - "ia32" - ], + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/esbuild-windows-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", - "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", - "cpu": [ - "x64" - ], + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "debug": "4" + }, "engines": { - "node": ">=12" + "node": ">= 6.0.0" } }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", - "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", - "cpu": [ - "arm64" - ], + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", - "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "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.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "type-fest": "^0.21.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", - "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", - "dev": true, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-hidden": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz", + "integrity": "sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==", "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.10.0", - "get-tsconfig": "^4.2.0", - "globby": "^13.1.2", - "is-core-module": "^2.10.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.4" + "tslib": "^2.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + "node": ">=10" }, "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.9.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/eslint-import-resolver-typescript/node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.0" } }, - "node_modules/eslint-import-resolver-typescript/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "dependencies": { - "debug": "^3.2.7" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/asn1js/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", - "minimatch": "^3.1.2", - "semver": "^6.3.0" - }, "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": "*" } }, - "node_modules/eslint-plugin-react": { - "version": "7.31.10", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", - "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "dependencies": { - "array-includes": "^3.1.5", - "array.prototype.flatmap": "^1.3.0", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.1", - "object.values": "^1.1.5", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.7" - }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">=8" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/axe-core": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.1.tgz", + "integrity": "sha512-1exVbW0X1O/HSr/WMwnaweyqcWOgZgLiVxdLG34pvSQk4NlYQr9OUy0JLwuhFfuVNQzzqgH57eYzkFBCb3bIsQ==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, "engines": { - "node": ">=8.0.0" + "node": ">=4" } }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "node_modules/axios": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", + "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "dev": true + }, + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dev": true, + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" }, "peerDependencies": { - "eslint": ">=5" + "@babel/core": "^7.0.0" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" }, - "engines": { - "node": ">=10" + "bin": { + "browserslist": "cli.js" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "node-int64": "^0.4.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "streamsearch": "^1.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10.16.0" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "node_modules/caniuse-lite": { + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "dev": true, "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" } }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, "dependencies": { - "estraverse": "^5.1.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" }, "engines": { - "node": ">=0.10" + "node": ">=4" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { - "estraverse": "^5.2.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { - "node": ">=4.0" + "node": ">=0.8.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", "dev": true, - "engines": { - "node": ">=0.8.x" + "dependencies": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=8.6.0" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/fast-glob/node_modules/glob-parent": { + "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", @@ -4772,537 +5559,520 @@ "node": ">= 6" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "dependencies": { - "reusify": "^1.0.4" + "engines": { + "node": ">=6" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "restore-cursor": "^3.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=0.8" } }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "node_modules/focus-lock": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.3.tgz", - "integrity": "sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "tslib": "^2.0.3" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node": ">= 12" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, "engines": { - "node": ">= 6" + "node": ">=4.0.0" } }, - "node_modules/framer-motion": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.5.3.tgz", - "integrity": "sha512-VvANga9Z7bYtKMAsM/je81FwJDHfThOYywN04xVQ4OGdMVY09Bowx/q7nZd6XtytLuv6byc6GT1mYwag+SQ/nw==", - "dependencies": { - "@motionone/dom": "10.13.1", - "framesync": "6.1.2", - "hey-listen": "^1.0.8", - "popmotion": "11.0.5", - "style-value-types": "5.1.2", - "tslib": "2.4.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, - "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "optional": true, - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/framer-motion/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "optional": true - }, - "node_modules/framer-motion/node_modules/framesync": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", - "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", - "dependencies": { - "tslib": "2.4.0" - } - }, - "node_modules/framer-motion/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "node_modules/compare-versions": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", + "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "dev": true }, - "node_modules/framesync": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", - "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", - "dependencies": { - "tslib": "^2.1.0" - } + "node_modules/compute-scroll-into-view": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", + "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" }, - "node_modules/framesync/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, - "node_modules/fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "node_modules/concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" }, "engines": { - "node": ">=12" + "node": ">=10.0.0" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=7.0.0" } }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "tslib": "^1.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "engines": { - "node": ">=6" + "npm": ">=2.0.0" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/get-tsconfig": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", - "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "node_modules/console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "easy-table": "1.1.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "> 0.10" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true + "node_modules/copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "dependencies": { + "toggle-selection": "^1.0.6" + } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/core-js-pure": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", + "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { "node": ">=10" + } + }, + "node_modules/cosmiconfig-toml-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz", + "integrity": "sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==", + "dev": true, + "dependencies": { + "@iarna/toml": "^2.2.5" + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.1.1.tgz", + "integrity": "sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg==", + "dev": true, + "engines": { + "node": ">=12", + "npm": ">=6" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=3" } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 8" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/dataloader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz", + "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", "dev": true }, - "node_modules/graphql": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "node_modules/date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "function-bind": "^1.1.1" + "ms": "2.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/deep-eql": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", + "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "clone": "^1.0.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -5311,237 +6081,204 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/headers-polyfill": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.1.2.tgz", - "integrity": "sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==", - "dev": true - }, - "node_modules/hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, "engines": { - "node": ">= 4" + "node": ">=0.3.1" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, "engines": { - "node": ">=0.8.19" + "node": ">=6.0.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/inquirer": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", - "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, "engines": { - "node": ">=12.0.0" + "node": ">=12" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/dset": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz", + "integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "optionalDependencies": { + "wcwidth": ">=1.0.1" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "safe-buffer": "^5.0.1" } }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "is-arrayish": "^0.2.1" } }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "node_modules/es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "side-channel": "^1.0.4" + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, "dependencies": { - "loose-envify": "^1.0.0" + "has": "^1.0.3" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5550,561 +6287,760 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/esbuild": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/esbuild-android-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/esbuild-android-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/esbuild-darwin-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/esbuild-freebsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", + "cpu": [ + "x64" + ], "dev": true, - "bin": { - "is-docker": "cli.js" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/esbuild-linux-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "node_modules/esbuild-linux-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/esbuild-linux-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/esbuild-linux-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", + "cpu": [ + "mips64el" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-node-process": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.0.1.tgz", - "integrity": "sha512-5IcdXuf++TTNt3oGl9EBdkvndXA8gmc4bz/Y+mdEpWh3Mcn/+kOw6hI7LD5CocqJWMzeb0I0ClndRVNdEPuJXQ==", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", + "cpu": [ + "ppc64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.12.0" + "node": ">=12" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/esbuild-linux-s390x": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", + "cpu": [ + "s390x" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/esbuild-netbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "node_modules/esbuild-openbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/esbuild-sunos-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/esbuild-windows-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "node_modules/esbuild-windows-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", + "cpu": [ + "x64" + ], "dev": true, - "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" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/esbuild-windows-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/eslint": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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.0", + "text-table": "^0.2.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, "bin": { - "json5": "lib/cli.js" + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "debug": "^3.2.7", + "resolve": "^1.20.0" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - }, - "engines": { - "node": ">=4.0" + "ms": "^2.1.1" } }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", + "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", "dev": true, "dependencies": { - "language-subtag-registry": "~0.3.2" + "debug": "^4.3.4", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", + "is-glob": "^4.0.3", + "synckit": "^0.8.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/eslint-import-resolver-typescript/node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/load-json-file": { + "node_modules/eslint-import-resolver-typescript/node_modules/slash": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "debug": "^3.2.7" }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/local-pkg": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.2.tgz", - "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, "engines": { - "node": ">=14" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.31.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", + "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "engines": { + "node": ">=4" }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=10" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -6119,7 +7055,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-symbols/node_modules/chalk": { + "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -6135,7 +7071,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-symbols/node_modules/color-convert": { + "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -6147,597 +7083,624 @@ "node": ">=7.0.0" } }, - "node_modules/log-symbols/node_modules/color-name": { + "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/eslint/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "type-fest": "^0.20.2" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">= 0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">= 8" + "node": ">=0.10" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.6" + "node": ">=4.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=4.0" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/event-target-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz", + "integrity": "sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ==", + "dev": true + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=0.8.x" } }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/msw": { - "version": "0.47.4", - "resolved": "https://registry.npmjs.org/msw/-/msw-0.47.4.tgz", - "integrity": "sha512-Psftt8Yfl0+l+qqg9OlmKEsxF8S/vtda0CmlR6y8wTaWrMMzuCDa55n2hEGC0ZRDwuV6FFWc/4CjoDsBpATKBw==", + "node_modules/extract-files": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", + "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==", "dev": true, - "hasInstallScript": true, - "dependencies": { - "@mswjs/cookies": "^0.2.2", - "@mswjs/interceptors": "^0.17.5", - "@open-draft/until": "^1.0.3", - "@types/cookie": "^0.4.1", - "@types/js-levenshtein": "^1.1.1", - "chalk": "4.1.1", - "chokidar": "^3.4.2", - "cookie": "^0.4.2", - "graphql": "^15.0.0 || ^16.0.0", - "headers-polyfill": "^3.1.0", - "inquirer": "^8.2.0", - "is-node-process": "^1.0.1", - "js-levenshtein": "^1.1.6", - "node-fetch": "^2.6.7", - "outvariant": "^1.3.0", - "path-to-regexp": "^6.2.0", - "statuses": "^2.0.0", - "strict-event-emitter": "^0.2.6", - "type-fest": "^2.19.0", - "yargs": "^17.3.1" - }, - "bin": { - "msw": "cli/index.js" - }, "engines": { - "node": ">=14" + "node": "^12.20 || >= 14.13" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mswjs" - }, - "peerDependencies": { - "typescript": ">= 4.2.x <= 4.8.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/jaydenseric" } }, - "node_modules/msw/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8.6.0" } }, - "node_modules/msw/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 6" } }, - "node_modules/msw/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" + "reusify": "^1.0.4" } }, - "node_modules/msw/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "bser": "2.1.1" } }, - "node_modules/msw/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/msw/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" } }, - "node_modules/msw/node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", "dev": true }, - "node_modules/msw/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "escape-string-regexp": "^1.0.5" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/msw/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, - "node_modules/msw/node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=12" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/msw/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, + "node_modules/focus-lock": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.3.tgz", + "integrity": "sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg==", "dependencies": { - "whatwg-url": "^5.0.0" + "tslib": "^2.0.3" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">=10" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" }, "peerDependenciesMeta": { - "encoding": { + "debug": { "optional": true } } }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "is-callable": "^1.1.3" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "dev": true + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", "dev": true, + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.20" } }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, "engines": { - "node": ">= 4" + "node": ">= 14" } }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "node_modules/framer-motion": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.5.3.tgz", + "integrity": "sha512-VvANga9Z7bYtKMAsM/je81FwJDHfThOYywN04xVQ4OGdMVY09Bowx/q7nZd6XtytLuv6byc6GT1mYwag+SQ/nw==", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "@motionone/dom": "10.13.1", + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "popmotion": "11.0.5", + "style-value-types": "5.1.2", + "tslib": "2.4.0" }, - "engines": { - "node": ">=4.8" + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/npm-run-all/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" } }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/framer-motion/node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "dependencies": { + "tslib": "2.4.0" } }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/framer-motion/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/framesync": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", + "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/framesync/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/npm-run-all/node_modules/shebang-regex": { + "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "engines": { - "node": ">= 6" + "node": ">=6.9.0" } }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true, "engines": { - "node": ">= 0.4" + "node": "*" } }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "engines": { - "node": ">= 0.4" + "node": ">=6" } }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "get-intrinsic": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -6746,703 +7709,613 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "node_modules/get-tsconfig": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", + "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", "dev": true, - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "wrappy": "1" + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" + "get-intrinsic": "^1.1.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-config": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-4.3.6.tgz", + "integrity": "sha512-i7mAPwc0LAZPnYu2bI8B6yXU5820Wy/ArvmOseDLZIu0OU1UTULEuexHo6ZcHXeT9NvGGaUPQZm8NV3z79YydA==", + "dev": true, + "dependencies": { + "@graphql-tools/graphql-file-loader": "^7.3.7", + "@graphql-tools/json-file-loader": "^7.3.7", + "@graphql-tools/load": "^7.5.5", + "@graphql-tools/merge": "^8.2.6", + "@graphql-tools/url-loader": "^7.9.7", + "@graphql-tools/utils": "^8.6.5", + "cosmiconfig": "7.0.1", + "cosmiconfig-toml-loader": "1.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "minimatch": "4.2.1", + "string-env-interpolation": "1.0.1", + "ts-node": "^10.8.1", + "tslib": "^2.4.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 10.0.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "node_modules/graphql-config/node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", "dev": true, "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "brace-expansion": "^1.1.7" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/graphql-config/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/graphql-request": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.0.0.tgz", + "integrity": "sha512-SpVEnIo2J5k2+Zf76cUkdvIRaq5FMZvGQYnA4lUWYbc99m+fHh4CZYRRO/Ff4tCLQ613fzCm3SiDT64ubW5Gyw==", "dependencies": { - "color-convert": "^2.0.1" + "@graphql-typed-document-node/core": "^3.1.1", + "cross-fetch": "^3.1.5", + "extract-files": "^9.0.0", + "form-data": "^3.0.0" }, + "peerDependencies": { + "graphql": "14 - 16" + } + }, + "node_modules/graphql-request/node_modules/extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", "engines": { - "node": ">=8" + "node": "^10.17.0 || ^12.0.0 || >= 13.7.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/jaydenseric" } }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/graphql-request/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 6" } }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "tslib": "^2.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/graphql-tag/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/graphql-ws": { + "version": "5.11.2", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.11.2.tgz", + "integrity": "sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "peerDependencies": { + "graphql": ">=0.11 <=16" } }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dependencies": { - "has-flag": "^4.0.0" + "function-bind": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4.0" } }, - "node_modules/os-tmpdir": { + "node_modules/has-bigints": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/outvariant": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.3.0.tgz", - "integrity": "sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==", - "dev": true + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "get-intrinsic": "^1.1.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "node_modules/headers-polyfill": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.1.2.tgz", + "integrity": "sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">= 6" } }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" + "dependencies": { + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=0.10" + "node": ">= 6" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/popmotion": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", - "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", - "dependencies": { - "framesync": "6.1.2", - "hey-listen": "^1.0.8", - "style-value-types": "5.1.2", - "tslib": "2.4.0" - } - }, - "node_modules/popmotion/node_modules/framesync": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", - "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", "dependencies": { - "tslib": "2.4.0" + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/popmotion/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "type": "github", + "url": "https://github.com/sponsors/feross" }, { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">= 4" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=0.8.0" } }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=6" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "node_modules/import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.19" } }, - "node_modules/react-clientside-effect": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", - "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", - "dependencies": { - "@babel/runtime": "^7.12.13" - }, - "peerDependencies": { - "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/react-fast-compare": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", - "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "node_modules/react-focus-lock": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", - "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", + "node_modules/inquirer": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", + "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.0.0", - "focus-lock": "^0.11.2", - "prop-types": "^15.6.2", - "react-clientside-effect": "^1.2.6", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=12.0.0" } }, - "node_modules/react-hook-form": { - "version": "7.39.1", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.39.1.tgz", - "integrity": "sha512-MiF9PCILN5KulhSGbnjohMiTOrB47GerDTichMNP0y2cPUu1GTRFqbunOxCE9N1499YTLMV/ne4gFzqCp1rxrQ==", + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12.22.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/react-hook-form" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17 || ^18" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", "dependencies": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=7.0.0" } }, - "node_modules/react-remove-scroll/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "dependencies": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=8" } }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "dev": true, "dependencies": { - "pify": "^3.0.0" + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "loose-envify": "^1.0.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dev": true, "dependencies": { - "picomatch": "^2.2.1" + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=0.10.0" } }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "node_modules/regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7451,740 +8324,863 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "has-bigints": "^1.0.1" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { - "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "has-tostringtag": "^1.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "bin": { - "rollup": "dist/bin/rollup" + "dependencies": { + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=0.10.0" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "queue-microtask": "^1.2.2" + "tslib": "^2.0.3" } }, - "node_modules/rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, - "dependencies": { - "tslib": "^2.1.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "node_modules/is-node-process": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.0.1.tgz", + "integrity": "sha512-5IcdXuf++TTNt3oGl9EBdkvndXA8gmc4bz/Y+mdEpWh3Mcn/+kOw6hI7LD5CocqJWMzeb0I0ClndRVNdEPuJXQ==", "dev": true }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/set-cookie-parser": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", - "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "is-unc-path": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel": { + "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "dev": true, + "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" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "node_modules/is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", "dev": true, "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "tslib": "^2.0.3" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/strict-event-emitter": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", - "integrity": "sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "events": "^3.3.0" + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "jsonify": "~0.0.0" } }, - "node_modules/string.prototype.padend": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", - "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-to-pretty-yaml": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", + "integrity": "sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "remedial": "^1.0.7", + "remove-trailing-spaces": "^1.0.6" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.2.0" + } + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "bin": { + "json5": "lib/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=8" + "node": ">=4", + "npm": ">=1.4.28" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "engines": { - "node": ">=4" + "bin": { + "semver": "bin/semver" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4.0" } }, - "node_modules/strip-literal": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz", - "integrity": "sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==", + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, "dependencies": { - "acorn": "^8.8.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "node_modules/style-value-types": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", - "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, "dependencies": { - "hey-listen": "^1.0.8", - "tslib": "2.4.0" + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/style-value-types/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true }, - "node_modules/stylis": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", - "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/synckit": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", - "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "node_modules/listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.4.0" + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">=12" }, - "funding": { - "url": "https://opencollective.com/unts" + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } } }, - "node_modules/synckit/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" - }, - "node_modules/tinybench": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", - "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", - "dev": true - }, - "node_modules/tinypool": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.0.tgz", - "integrity": "sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==", - "dev": true, + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, "engines": { - "node": ">=14.0.0" + "node": ">=4" } }, - "node_modules/tinyspy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", - "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", + "node_modules/local-pkg": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.2.tgz", + "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", "dev": true, "engines": { - "node": ">=14.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "os-tmpdir": "~1.0.2" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=0.6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true }, - "node_modules/toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "dev": true }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "color-convert": "^2.0.1" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "tslib": "^1.8.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6" + "node": ">=10" }, - "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" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.8.0" + "node": ">=7.0.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, "engines": { "node": ">=10" }, @@ -8192,372 +9188,309 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4.2.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "loose-envify": "cli.js" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", "dev": true, "dependencies": { - "punycode": "^2.1.0" + "get-func-name": "^2.0.0" } }, - "node_modules/use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "tslib": "^2.0.3" } }, - "node_modules/use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "node_modules/lower-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", + "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", + "dev": true, "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "engines": { + "node": ">= 0.10.0" } }, - "node_modules/vite": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz", - "integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - }, - "bin": { - "vite": "bin/vite.js" - }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">= 8" + } + }, + "node_modules/meros": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/meros/-/meros-1.2.1.tgz", + "integrity": "sha512-R2f/jxYqCAGI19KhAvaxSOxALBMkaXWH2a7rOyqQw+ZmizX5bKkEYWLzdhC+U82ZVVPVp6MCXe3EkVligh+12g==", + "dev": true, + "engines": { + "node": ">=13" }, "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "@types/node": ">=13" }, "peerDependenciesMeta": { "@types/node": { "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true } } }, - "node_modules/vitest": { - "version": "0.24.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.24.5.tgz", - "integrity": "sha512-zw6JhPUHtLILQDe5Q39b/SzoITkG+R7hcFjuthp4xsi6zpmfQPOZcHodZ+3bqoWl4EdGK/p1fuMiEwdxgbGLOA==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "@types/chai": "^4.3.3", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "chai": "^4.3.6", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "strip-literal": "^0.4.2", - "tinybench": "^2.3.1", - "tinypool": "^0.3.0", - "tinyspy": "^1.0.2", - "vite": "^3.0.0" - }, - "bin": { - "vitest": "vitest.mjs" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } + "node": ">=8.6" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/web-encoding": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", - "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", - "dev": true, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "util": "^0.12.3" + "mime-db": "1.52.0" }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 8" + "node": "*" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "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", - "is-typed-array": "^1.1.10" + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/msw": { + "version": "0.47.4", + "resolved": "https://registry.npmjs.org/msw/-/msw-0.47.4.tgz", + "integrity": "sha512-Psftt8Yfl0+l+qqg9OlmKEsxF8S/vtda0CmlR6y8wTaWrMMzuCDa55n2hEGC0ZRDwuV6FFWc/4CjoDsBpATKBw==", "dev": true, + "hasInstallScript": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@mswjs/cookies": "^0.2.2", + "@mswjs/interceptors": "^0.17.5", + "@open-draft/until": "^1.0.3", + "@types/cookie": "^0.4.1", + "@types/js-levenshtein": "^1.1.1", + "chalk": "4.1.1", + "chokidar": "^3.4.2", + "cookie": "^0.4.2", + "graphql": "^15.0.0 || ^16.0.0", + "headers-polyfill": "^3.1.0", + "inquirer": "^8.2.0", + "is-node-process": "^1.0.1", + "js-levenshtein": "^1.1.6", + "node-fetch": "^2.6.7", + "outvariant": "^1.3.0", + "path-to-regexp": "^6.2.0", + "statuses": "^2.0.0", + "strict-event-emitter": "^0.2.6", + "type-fest": "^2.19.0", + "yargs": "^17.3.1" + }, + "bin": { + "msw": "cli/index.js" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.2.x <= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { + "node_modules/msw/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -8572,7 +9505,37 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { + "node_modules/msw/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/msw/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/msw/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -8584,1347 +9547,5652 @@ "node": ">=7.0.0" } }, - "node_modules/wrap-ansi/node_modules/color-name": { + "node_modules/msw/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/msw/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/msw/node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", "dev": true }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/msw/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/msw/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/msw/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/msw/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, - "engines": { - "node": ">=10" + "bin": { + "nanoid": "bin/nanoid.cjs" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, - "@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==" + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true }, - "@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, - "@babel/generator": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", - "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", - "requires": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "requires": { - "@babel/types": "^7.18.6" + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "requires": { - "@babel/types": "^7.18.6" + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" } }, - "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "requires": { - "@babel/types": "^7.20.2" + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" } }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "requires": { - "@babel/types": "^7.18.6" + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" } }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==" + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true }, - "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-react-jsx": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", - "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.19.0" + "engines": { + "node": ">= 6" } }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true, - "requires": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", - "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "engines": { + "node": ">= 0.4" } }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", - "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", - "requires": { - "regenerator-runtime": "^0.13.10" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/runtime-corejs3": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz", - "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==", + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, - "requires": { - "core-js-pure": "^3.25.1", - "regenerator-runtime": "^0.13.10" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" } }, - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - }, - "@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@chakra-ui/accordion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.1.tgz", - "integrity": "sha512-5f4QBl/0EgU/9EVvzlj8ZU7SWwG6nUHCE9moGBCbgiIOVBEySxZ5Robsk6+T7sXmzQ41db04GcUE9NRKdalgIA==", - "requires": { - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/transition": "2.0.10" + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@chakra-ui/alert": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", - "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", - "requires": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/spinner": "2.0.10" + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" } }, - "@chakra-ui/anatomy": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", - "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" - }, - "@chakra-ui/avatar": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.1.1.tgz", - "integrity": "sha512-lTZPUq4Pefxgv3ndyJMxIHgFrXwdz2VZFCLF/aKcuGaUlB7TBYaCurQ7TNbME8j8VkJWNX+vKiVHPYvxsrITwQ==", - "requires": { - "@chakra-ui/image": "2.0.11", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4" + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@chakra-ui/breadcrumb": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.0.10.tgz", - "integrity": "sha512-roKFA7nheq18eWNAdrHV6w8A9vZMSQTEEsbL6eU0lhUkolW9RlDjBl1bZvE7icFkNFXlJ33n8+0QAezLI+mMrQ==", - "requires": { - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4" + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@chakra-ui/breakpoint-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", - "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "@chakra-ui/button": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", - "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", - "requires": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/spinner": "2.0.10" + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@chakra-ui/checkbox": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.1.tgz", - "integrity": "sha512-soTeXEI+4UZSA4B4rRLpdh3cIW/gdhY6k0eXF4ZWExPb+dJ5Giv497S96vS4IGE7SJ7Ugw9kaWS+do2lSiPJew==", - "requires": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/visually-hidden": "2.0.11", - "@zag-js/focus-visible": "0.1.0" + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@chakra-ui/clickable": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", - "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", - "requires": { - "@chakra-ui/react-use-merge-refs": "2.0.4" + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@chakra-ui/close-button": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", - "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", - "requires": { - "@chakra-ui/icon": "3.0.11" + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "@chakra-ui/color-mode": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", - "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", - "requires": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" - } - }, - "@chakra-ui/control-box": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", - "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", - "requires": {} + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "@chakra-ui/counter": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", - "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", - "requires": { - "@chakra-ui/number-utils": "2.0.4", - "@chakra-ui/react-use-callback-ref": "2.0.4" + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "@chakra-ui/css-reset": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", - "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", - "requires": {} + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "@chakra-ui/descendant": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", - "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", - "requires": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@chakra-ui/dom-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", - "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" + "node_modules/outvariant": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.3.0.tgz", + "integrity": "sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==", + "dev": true }, - "@chakra-ui/editable": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.12.tgz", - "integrity": "sha512-37bDqm+j2JTN2XR443KRK9MmHHIQuS6fN+2TRuFgjfG8TomxxCJnhJ3GIfQSKh5Yjtnt4sXDmL4L0tyDpNrrrw==", - "requires": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@chakra-ui/event-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", - "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" - }, - "@chakra-ui/focus-lock": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", - "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", - "requires": { - "@chakra-ui/dom-utils": "2.0.3", - "react-focus-lock": "^2.9.1" + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@chakra-ui/form-control": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", - "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", - "requires": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@chakra-ui/hooks": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.0.11.tgz", - "integrity": "sha512-mYN4u9lbjDjEr/VucrVcLGg/sIO6gA9ZprcT3n9CBGSWt3xih7fCOJmE+yRcCNbL7335AMrv7a/M5Q30aRArcA==", - "requires": { - "@chakra-ui/react-utils": "2.0.8", - "@chakra-ui/utils": "2.0.11", - "compute-scroll-into-view": "1.0.14", - "copy-to-clipboard": "3.3.1" + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" } }, - "@chakra-ui/icon": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", - "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", - "requires": { - "@chakra-ui/shared-utils": "2.0.2" + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "@chakra-ui/image": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", - "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", - "requires": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "@chakra-ui/input": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.11.tgz", - "integrity": "sha512-kaV0VCz6/yzoCKQnh/tMUVgh+Rp6EnM+WzJ37SVX1gDvErON2bmmVLU45BiRoWUcd50wOhDlpsNVUWP0sLlCDA==", - "requires": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/object-utils": "2.0.4", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "@chakra-ui/layout": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.8.tgz", - "integrity": "sha512-pcNUNgMh+e4wepNOlCg5iDrxGg4VFBpqZPmSHoP4TyPN2ddEnDRLoMLaREMoX7gEVyTsqEFOFg+wa3JZK32H4A==", - "requires": { - "@chakra-ui/breakpoint-utils": "2.0.4", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/object-utils": "2.0.4", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@chakra-ui/lazy-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", - "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } }, - "@chakra-ui/live-region": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", - "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", - "requires": {} + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } }, - "@chakra-ui/media-query": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", - "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", - "requires": { - "@chakra-ui/breakpoint-utils": "2.0.4", - "@chakra-ui/react-env": "2.0.10" + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" } }, - "@chakra-ui/menu": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.1.tgz", - "integrity": "sha512-9fpCyV3vufLV5Rvv/oYC3LyCIkNqh0bEdYFVOLiqCZ6mt6NLFxL2jgE25nROYfDXQuBkY0qPC9IopYU198G4nw==", - "requires": { - "@chakra-ui/clickable": "2.0.10", - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-animation-state": "2.0.5", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-focus-effect": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-outside-click": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/transition": "2.0.10" + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@chakra-ui/modal": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.1.tgz", - "integrity": "sha512-+zfiUG/yZqUQ0wY7syoZg01cpBf54lbKUe7+ANEx558UQGbsI4bbcHSkY9l5lsprQ8teInvhjb6BekeCA0e7TA==", - "requires": { - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/focus-lock": "2.0.12", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/transition": "2.0.10", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.5.4" + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" } }, - "@chakra-ui/number-input": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", - "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", - "requires": { - "@chakra-ui/counter": "2.0.10", - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-interval": "2.0.2", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4" + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@chakra-ui/number-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", - "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "@chakra-ui/object-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", - "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "dev": true }, - "@chakra-ui/pin-input": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.14.tgz", - "integrity": "sha512-gFNlTUjU1xIuOErR/d/HrNNh1mS0erjNJSt5C6RU/My4lShzgCczmwnil7TuEx3k7lPqHKLEf/CGeCxBSUjaGA==", - "requires": { - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" } }, - "@chakra-ui/popover": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", - "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", - "requires": { - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-animation-state": "2.0.5", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-focus-effect": "2.0.5", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" } }, - "@chakra-ui/popper": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", - "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", - "requires": { - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@popperjs/core": "^2.9.3" + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "@chakra-ui/portal": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", - "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", - "requires": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" } }, - "@chakra-ui/progress": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.11.tgz", - "integrity": "sha512-2OwxGxI6W757QpDB6b++B4b2+t0oBgaQdHnd4/y35n3+mOFj++Wg7XpW4/iDHn+x3LkM+X3NIgdBWQFlmGx+6w==", - "requires": { - "@chakra-ui/react-context": "2.0.4" + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" } }, - "@chakra-ui/provider": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.19.tgz", - "integrity": "sha512-V+p0OePre0OgYmNxLbfiPWWbzaJ/EM2sfaRtD7E6ZA4TjUl2m4pWdC6OPMOiklu7EALfSgVk9X6Jh5pc+moH1g==", - "requires": { - "@chakra-ui/css-reset": "2.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-env": "2.0.10", - "@chakra-ui/system": "2.2.12", - "@chakra-ui/utils": "2.0.11" + "node_modules/popmotion": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", + "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", + "dependencies": { + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "style-value-types": "5.1.2", + "tslib": "2.4.0" } }, - "@chakra-ui/radio": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", - "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", - "requires": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@zag-js/focus-visible": "0.1.0" + "node_modules/popmotion/node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "dependencies": { + "tslib": "2.4.0" } }, - "@chakra-ui/react": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.5.tgz", - "integrity": "sha512-bQDRV23M3IvF0+AorTvqJmG/4T6KKQIb+1XGA2RyxonoSHVt89HbN3qnygHJw06Sdgpclxdbr/1qZ4o8+SMbpA==", - "requires": { - "@chakra-ui/accordion": "2.1.1", - "@chakra-ui/alert": "2.0.11", - "@chakra-ui/avatar": "2.1.1", - "@chakra-ui/breadcrumb": "2.0.10", - "@chakra-ui/button": "2.0.11", - "@chakra-ui/checkbox": "2.2.1", - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/control-box": "2.0.10", - "@chakra-ui/counter": "2.0.10", - "@chakra-ui/css-reset": "2.0.8", - "@chakra-ui/editable": "2.0.12", - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/hooks": "2.0.11", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/image": "2.0.11", - "@chakra-ui/input": "2.0.11", - "@chakra-ui/layout": "2.1.8", - "@chakra-ui/live-region": "2.0.10", - "@chakra-ui/media-query": "3.2.7", - "@chakra-ui/menu": "2.1.1", - "@chakra-ui/modal": "2.2.1", - "@chakra-ui/number-input": "2.0.12", - "@chakra-ui/pin-input": "2.0.14", - "@chakra-ui/popover": "2.1.1", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/progress": "2.0.11", - "@chakra-ui/provider": "2.0.19", - "@chakra-ui/radio": "2.0.12", - "@chakra-ui/react-env": "2.0.10", - "@chakra-ui/select": "2.0.12", - "@chakra-ui/skeleton": "2.0.17", - "@chakra-ui/slider": "2.0.12", - "@chakra-ui/spinner": "2.0.10", - "@chakra-ui/stat": "2.0.11", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/switch": "2.0.13", - "@chakra-ui/system": "2.2.12", - "@chakra-ui/table": "2.0.11", - "@chakra-ui/tabs": "2.1.3", - "@chakra-ui/tag": "2.0.11", - "@chakra-ui/textarea": "2.0.12", - "@chakra-ui/theme": "2.1.13", - "@chakra-ui/toast": "3.0.13", - "@chakra-ui/tooltip": "2.2.0", - "@chakra-ui/transition": "2.0.10", - "@chakra-ui/utils": "2.0.11", - "@chakra-ui/visually-hidden": "2.0.11" - } - }, - "@chakra-ui/react-children-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.2.tgz", - "integrity": "sha512-mRTGAZ3DBXB3hgVwS2DVJe3Nlc0qGvMN0PAo4tD/3fj2op2IwspLcYPAWC5D/rI2xj2JlwE6szAtbvxdAfLCNw==" - }, - "@chakra-ui/react-context": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", - "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", - "requires": {} - }, - "@chakra-ui/react-env": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", - "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", - "requires": {} - }, - "@chakra-ui/react-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", - "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", - "requires": {} + "node_modules/popmotion/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, - "@chakra-ui/react-use-animation-state": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", - "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", - "requires": { - "@chakra-ui/dom-utils": "2.0.3", - "@chakra-ui/react-use-event-listener": "2.0.4" + "node_modules/postcss": { + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "@chakra-ui/react-use-callback-ref": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", - "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", - "requires": {} - }, - "@chakra-ui/react-use-controllable-state": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", - "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" } }, - "@chakra-ui/react-use-disclosure": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", - "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "@chakra-ui/react-use-event-listener": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", - "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "dependencies": { + "asap": "~2.0.3" } }, - "@chakra-ui/react-use-focus-effect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", - "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", - "requires": { - "@chakra-ui/dom-utils": "2.0.3", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4" + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "@chakra-ui/react-use-focus-on-pointer-down": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", - "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", - "requires": { - "@chakra-ui/react-use-event-listener": "2.0.4" - } + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "@chakra-ui/react-use-interval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", - "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" } }, - "@chakra-ui/react-use-latest-ref": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", - "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", - "requires": {} - }, - "@chakra-ui/react-use-merge-refs": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", - "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", - "requires": {} - }, - "@chakra-ui/react-use-outside-click": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", - "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "node_modules/pvtsutils": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz", + "integrity": "sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" } }, - "@chakra-ui/react-use-pan-event": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", - "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", - "requires": { - "@chakra-ui/event-utils": "2.0.5", - "@chakra-ui/react-use-latest-ref": "2.0.2", - "framesync": "5.3.0" - } + "node_modules/pvtsutils/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true }, - "@chakra-ui/react-use-previous": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", - "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", - "requires": {} + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } }, - "@chakra-ui/react-use-safe-layout-effect": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", - "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", - "requires": {} + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "@chakra-ui/react-use-size": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", - "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", - "requires": { - "@zag-js/element-size": "0.1.0" + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@chakra-ui/react-use-timeout": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", - "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "node_modules/react-clientside-effect": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", + "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "dependencies": { + "@babel/runtime": "^7.12.13" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, - "@chakra-ui/react-use-update-effect": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", - "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", - "requires": {} - }, - "@chakra-ui/react-utils": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", - "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", - "requires": { - "@chakra-ui/utils": "2.0.11" - } - }, - "@chakra-ui/select": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", - "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", - "requires": { - "@chakra-ui/form-control": "2.0.11" + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" } }, - "@chakra-ui/shared-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", - "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" + "node_modules/react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" }, - "@chakra-ui/skeleton": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", - "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", - "requires": { - "@chakra-ui/media-query": "3.2.7", - "@chakra-ui/react-use-previous": "2.0.2" + "node_modules/react-focus-lock": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", + "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.11.2", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.6", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "@chakra-ui/slider": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", - "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", - "requires": { - "@chakra-ui/number-utils": "2.0.4", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-latest-ref": "2.0.2", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-pan-event": "2.0.5", - "@chakra-ui/react-use-size": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4" + "node_modules/react-hook-form": { + "version": "7.39.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.39.1.tgz", + "integrity": "sha512-MiF9PCILN5KulhSGbnjohMiTOrB47GerDTichMNP0y2cPUu1GTRFqbunOxCE9N1499YTLMV/ne4gFzqCp1rxrQ==", + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" } }, - "@chakra-ui/spinner": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", - "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", - "requires": {} - }, - "@chakra-ui/stat": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", - "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", - "requires": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4" - } + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, - "@chakra-ui/styled-system": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", - "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", - "requires": { - "csstype": "^3.0.11", - "lodash.mergewith": "4.6.2" + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@chakra-ui/switch": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.13.tgz", - "integrity": "sha512-Ikj0L+SLLs/SnfGCiUChaldLIr/aizA1Q9D5+X6LtxpBnixFK/+fNXU+3juPDi9G1IFuNz2IAG51souO7C4nSQ==", - "requires": { - "@chakra-ui/checkbox": "2.2.1" + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "@chakra-ui/system": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.2.12.tgz", - "integrity": "sha512-I7hFQswp8tG6ogjEMFs5TsCItdCYuNxpLAULgUrLdOlsQeNnHNQhlL4zpIfD+VzguhsNy5lisbegAMKjdghTYg==", - "requires": { - "@chakra-ui/color-mode": "2.1.9", - "@chakra-ui/react-utils": "2.0.8", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/utils": "2.0.11", - "react-fast-compare": "3.2.0" + "node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "@chakra-ui/table": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", - "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", - "requires": { - "@chakra-ui/react-context": "2.0.4" - } + "node_modules/react-remove-scroll/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, - "@chakra-ui/tabs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.3.tgz", - "integrity": "sha512-9gUcj49LMt5QQnfJHR/ctr9VPttJ97CtQWuH2Irjb3RXkq1TRrz6wjythPImNQUv1/DYyXp2jsUhoEQc4Oz14Q==", - "requires": { - "@chakra-ui/clickable": "2.0.10", - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/react-children-utils": "2.0.2", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "@chakra-ui/tag": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", - "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", - "requires": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4" + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "@chakra-ui/textarea": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", - "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", - "requires": { - "@chakra-ui/form-control": "2.0.11" + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "@chakra-ui/theme": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.13.tgz", - "integrity": "sha512-qbrrvn9JstyLFV2qyhwgnhwzVs4zSJ4PcS3ScL8kafXJazTRU6onbCcjEZ5mVCw6z8uEz3jcE8Y5KIhVzaB+Xw==", - "requires": { - "@chakra-ui/anatomy": "2.0.7", - "@chakra-ui/theme-tools": "2.0.12" + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "@chakra-ui/theme-tools": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", - "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", - "requires": { - "@chakra-ui/anatomy": "2.0.7", - "@ctrl/tinycolor": "^3.4.0" + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "@chakra-ui/toast": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-3.0.13.tgz", - "integrity": "sha512-5GADso5l5Tv1PAL1iocEneLs6U7I8HHMHSMvWdPFSmmJJh0XCH3fboh0C9LiFNIcnEGJmn+A5yGc4vjedA0h2A==", - "requires": { - "@chakra-ui/alert": "2.0.11", - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-use-timeout": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/theme": "2.1.13" - } + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true }, - "@chakra-ui/tooltip": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", - "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", - "requires": { - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "node_modules/regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@chakra-ui/transition": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.10.tgz", - "integrity": "sha512-Tkkne8pIIY7f95TKt2aH+IAuQqzHmEt+ICPqvg74QbmIpKE5ptX0cd+P3swBANw4ACnJcCc2vWIaKmVBQ9clLw==", - "requires": {} + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } }, - "@chakra-ui/utils": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", - "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", - "requires": { - "@types/lodash.mergewith": "4.6.6", - "css-box-model": "1.2.1", - "framesync": "5.3.0", - "lodash.mergewith": "4.6.2" + "node_modules/relay-runtime": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", + "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.0.0", + "fbjs": "^3.0.0", + "invariant": "^2.2.4" } }, - "@chakra-ui/visually-hidden": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", - "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", - "requires": {} + "node_modules/remedial": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", + "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", + "dev": true, + "engines": { + "node": "*" + } }, - "@ctrl/tinycolor": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", - "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true }, - "@emotion/babel-plugin": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", - "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.17.12", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/serialize": "^1.1.1", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.1.3" - } + "node_modules/remove-trailing-spaces": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz", + "integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==", + "dev": true }, - "@emotion/cache": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", - "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", - "requires": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.3" + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@emotion/hash": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, - "@emotion/is-prop-valid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", - "requires": { - "@emotion/memoize": "^0.8.0" + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@emotion/memoize": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } }, - "@emotion/react": { - "version": "11.10.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", - "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", - "requires": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.0", - "@emotion/cache": "^11.10.0", - "@emotion/serialize": "^1.1.0", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "hoist-non-react-statics": "^3.3.1" + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "@emotion/serialize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", - "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", - "requires": { - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/unitless": "^0.8.0", - "@emotion/utils": "^1.2.0", - "csstype": "^3.0.2" + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true }, - "@emotion/styled": { - "version": "11.10.4", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", - "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", - "requires": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.0", - "@emotion/is-prop-valid": "^1.2.0", - "@emotion/serialize": "^1.1.0", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0" + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@emotion/unitless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } }, - "@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", - "requires": {} + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "@emotion/utils": { + "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } }, - "@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } }, - "@esbuild/android-arm": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", - "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "node_modules/rxjs/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "optional": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "@esbuild/linux-loong64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", - "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz", + "integrity": "sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/sponge-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", + "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", + "integrity": "sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==", + "dev": true, + "dependencies": { + "events": "^3.3.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-env-interpolation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", + "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz", + "integrity": "sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/style-value-types": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", + "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", + "dependencies": { + "hey-listen": "^1.0.8", + "tslib": "2.4.0" + } + }, + "node_modules/style-value-types/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/stylis": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", + "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swap-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", + "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/synckit": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", + "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/synckit/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/tinybench": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", + "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.0.tgz", + "integrity": "sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", + "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-log": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", + "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==", + "dev": true + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "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" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undici": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=12.18" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dev": true, + "dependencies": { + "normalize-path": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unixify/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-promise": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz", + "integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "0.24.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.24.5.tgz", + "integrity": "sha512-zw6JhPUHtLILQDe5Q39b/SzoITkG+R7hcFjuthp4xsi6zpmfQPOZcHodZ+3bqoWl4EdGK/p1fuMiEwdxgbGLOA==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.3", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "chai": "^4.3.6", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "strip-literal": "^0.4.2", + "tinybench": "^2.3.1", + "tinypool": "^0.3.0", + "tinyspy": "^1.0.2", + "vite": "^3.0.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "dev": true, + "dependencies": { + "util": "^0.12.3" + }, + "optionalDependencies": { + "@zxing/text-encoding": "0.9.0" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webcrypto-core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.5.tgz", + "integrity": "sha512-gaExY2/3EHQlRNNNVSrbG2Cg94Rutl7fAaKILS1w8ZDhGxdFOaw6EbCfHIxPy9vt/xwp5o0VQAx9aySPF6hU1A==", + "dev": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.1.6", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" + } + }, + "node_modules/webcrypto-core/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "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", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@ardatan/relay-compiler": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", + "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", + "dev": true, + "requires": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "chalk": "^4.0.0", + "fb-watchman": "^2.0.0", + "fbjs": "^3.0.0", + "glob": "^7.1.1", + "immutable": "~3.7.6", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "relay-runtime": "12.0.0", + "signedsource": "^1.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@ardatan/sync-fetch": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz", + "integrity": "sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==" + }, + "@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", + "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", + "requires": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + }, + "@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==" + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", + "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-flow": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "requires": { + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/runtime-corejs3": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz", + "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==", + "dev": true, + "requires": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@chakra-ui/accordion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.1.tgz", + "integrity": "sha512-5f4QBl/0EgU/9EVvzlj8ZU7SWwG6nUHCE9moGBCbgiIOVBEySxZ5Robsk6+T7sXmzQ41db04GcUE9NRKdalgIA==", + "requires": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.10" + } + }, + "@chakra-ui/alert": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", + "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + } + }, + "@chakra-ui/anatomy": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", + "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" + }, + "@chakra-ui/avatar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.1.1.tgz", + "integrity": "sha512-lTZPUq4Pefxgv3ndyJMxIHgFrXwdz2VZFCLF/aKcuGaUlB7TBYaCurQ7TNbME8j8VkJWNX+vKiVHPYvxsrITwQ==", + "requires": { + "@chakra-ui/image": "2.0.11", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/breadcrumb": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.0.10.tgz", + "integrity": "sha512-roKFA7nheq18eWNAdrHV6w8A9vZMSQTEEsbL6eU0lhUkolW9RlDjBl1bZvE7icFkNFXlJ33n8+0QAezLI+mMrQ==", + "requires": { + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/breakpoint-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", + "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + }, + "@chakra-ui/button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", + "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/spinner": "2.0.10" + } + }, + "@chakra-ui/checkbox": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.1.tgz", + "integrity": "sha512-soTeXEI+4UZSA4B4rRLpdh3cIW/gdhY6k0eXF4ZWExPb+dJ5Giv497S96vS4IGE7SJ7Ugw9kaWS+do2lSiPJew==", + "requires": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/visually-hidden": "2.0.11", + "@zag-js/focus-visible": "0.1.0" + } + }, + "@chakra-ui/clickable": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", + "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", + "requires": { + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/close-button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", + "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "requires": { + "@chakra-ui/icon": "3.0.11" + } + }, + "@chakra-ui/color-mode": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", + "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", + "requires": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/control-box": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", + "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", + "requires": {} + }, + "@chakra-ui/counter": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", + "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", + "requires": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/css-reset": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", + "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", + "requires": {} + }, + "@chakra-ui/descendant": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", + "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/dom-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", + "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" + }, + "@chakra-ui/editable": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.12.tgz", + "integrity": "sha512-37bDqm+j2JTN2XR443KRK9MmHHIQuS6fN+2TRuFgjfG8TomxxCJnhJ3GIfQSKh5Yjtnt4sXDmL4L0tyDpNrrrw==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/event-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", + "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" + }, + "@chakra-ui/focus-lock": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", + "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", + "requires": { + "@chakra-ui/dom-utils": "2.0.3", + "react-focus-lock": "^2.9.1" + } + }, + "@chakra-ui/form-control": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", + "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/hooks": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.0.11.tgz", + "integrity": "sha512-mYN4u9lbjDjEr/VucrVcLGg/sIO6gA9ZprcT3n9CBGSWt3xih7fCOJmE+yRcCNbL7335AMrv7a/M5Q30aRArcA==", + "requires": { + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/utils": "2.0.11", + "compute-scroll-into-view": "1.0.14", + "copy-to-clipboard": "3.3.1" + } + }, + "@chakra-ui/icon": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", + "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", + "requires": { + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/image": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", + "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", + "requires": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/input": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.11.tgz", + "integrity": "sha512-kaV0VCz6/yzoCKQnh/tMUVgh+Rp6EnM+WzJ37SVX1gDvErON2bmmVLU45BiRoWUcd50wOhDlpsNVUWP0sLlCDA==", + "requires": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/layout": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.8.tgz", + "integrity": "sha512-pcNUNgMh+e4wepNOlCg5iDrxGg4VFBpqZPmSHoP4TyPN2ddEnDRLoMLaREMoX7gEVyTsqEFOFg+wa3JZK32H4A==", + "requires": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" + } + }, + "@chakra-ui/lazy-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", + "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" + }, + "@chakra-ui/live-region": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", + "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", + "requires": {} + }, + "@chakra-ui/media-query": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", + "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", + "requires": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/react-env": "2.0.10" + } + }, + "@chakra-ui/menu": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.1.tgz", + "integrity": "sha512-9fpCyV3vufLV5Rvv/oYC3LyCIkNqh0bEdYFVOLiqCZ6mt6NLFxL2jgE25nROYfDXQuBkY0qPC9IopYU198G4nw==", + "requires": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-outside-click": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/transition": "2.0.10" + } + }, + "@chakra-ui/modal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.1.tgz", + "integrity": "sha512-+zfiUG/yZqUQ0wY7syoZg01cpBf54lbKUe7+ANEx558UQGbsI4bbcHSkY9l5lsprQ8teInvhjb6BekeCA0e7TA==", + "requires": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/focus-lock": "2.0.12", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.10", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.5.4" + } + }, + "@chakra-ui/number-input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", + "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", + "requires": { + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-interval": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4" + } + }, + "@chakra-ui/number-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", + "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" + }, + "@chakra-ui/object-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", + "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + }, + "@chakra-ui/pin-input": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.14.tgz", + "integrity": "sha512-gFNlTUjU1xIuOErR/d/HrNNh1mS0erjNJSt5C6RU/My4lShzgCczmwnil7TuEx3k7lPqHKLEf/CGeCxBSUjaGA==", + "requires": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/popover": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", + "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", + "requires": { + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/popper": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", + "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", + "requires": { + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@popperjs/core": "^2.9.3" + } + }, + "@chakra-ui/portal": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", + "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/progress": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.11.tgz", + "integrity": "sha512-2OwxGxI6W757QpDB6b++B4b2+t0oBgaQdHnd4/y35n3+mOFj++Wg7XpW4/iDHn+x3LkM+X3NIgdBWQFlmGx+6w==", + "requires": { + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/provider": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.19.tgz", + "integrity": "sha512-V+p0OePre0OgYmNxLbfiPWWbzaJ/EM2sfaRtD7E6ZA4TjUl2m4pWdC6OPMOiklu7EALfSgVk9X6Jh5pc+moH1g==", + "requires": { + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/system": "2.2.12", + "@chakra-ui/utils": "2.0.11" + } + }, + "@chakra-ui/radio": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", + "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", + "requires": { + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@zag-js/focus-visible": "0.1.0" + } + }, + "@chakra-ui/react": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.5.tgz", + "integrity": "sha512-bQDRV23M3IvF0+AorTvqJmG/4T6KKQIb+1XGA2RyxonoSHVt89HbN3qnygHJw06Sdgpclxdbr/1qZ4o8+SMbpA==", + "requires": { + "@chakra-ui/accordion": "2.1.1", + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/avatar": "2.1.1", + "@chakra-ui/breadcrumb": "2.0.10", + "@chakra-ui/button": "2.0.11", + "@chakra-ui/checkbox": "2.2.1", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/control-box": "2.0.10", + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/editable": "2.0.12", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/hooks": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/image": "2.0.11", + "@chakra-ui/input": "2.0.11", + "@chakra-ui/layout": "2.1.8", + "@chakra-ui/live-region": "2.0.10", + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/menu": "2.1.1", + "@chakra-ui/modal": "2.2.1", + "@chakra-ui/number-input": "2.0.12", + "@chakra-ui/pin-input": "2.0.14", + "@chakra-ui/popover": "2.1.1", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/progress": "2.0.11", + "@chakra-ui/provider": "2.0.19", + "@chakra-ui/radio": "2.0.12", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/select": "2.0.12", + "@chakra-ui/skeleton": "2.0.17", + "@chakra-ui/slider": "2.0.12", + "@chakra-ui/spinner": "2.0.10", + "@chakra-ui/stat": "2.0.11", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/switch": "2.0.13", + "@chakra-ui/system": "2.2.12", + "@chakra-ui/table": "2.0.11", + "@chakra-ui/tabs": "2.1.3", + "@chakra-ui/tag": "2.0.11", + "@chakra-ui/textarea": "2.0.12", + "@chakra-ui/theme": "2.1.13", + "@chakra-ui/toast": "3.0.13", + "@chakra-ui/tooltip": "2.2.0", + "@chakra-ui/transition": "2.0.10", + "@chakra-ui/utils": "2.0.11", + "@chakra-ui/visually-hidden": "2.0.11" + } + }, + "@chakra-ui/react-children-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.2.tgz", + "integrity": "sha512-mRTGAZ3DBXB3hgVwS2DVJe3Nlc0qGvMN0PAo4tD/3fj2op2IwspLcYPAWC5D/rI2xj2JlwE6szAtbvxdAfLCNw==" + }, + "@chakra-ui/react-context": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", + "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "requires": {} + }, + "@chakra-ui/react-env": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", + "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", + "requires": {} + }, + "@chakra-ui/react-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", + "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", + "requires": {} + }, + "@chakra-ui/react-use-animation-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", + "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", + "requires": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4" + } + }, + "@chakra-ui/react-use-callback-ref": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", + "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "requires": {} + }, + "@chakra-ui/react-use-controllable-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", + "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-disclosure": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", + "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-event-listener": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", + "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-focus-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", + "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", + "requires": { + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + } + }, + "@chakra-ui/react-use-focus-on-pointer-down": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", + "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", + "requires": { + "@chakra-ui/react-use-event-listener": "2.0.4" + } + }, + "@chakra-ui/react-use-interval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", + "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-latest-ref": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", + "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", + "requires": {} + }, + "@chakra-ui/react-use-merge-refs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", + "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", + "requires": {} + }, + "@chakra-ui/react-use-outside-click": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", + "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-pan-event": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", + "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", + "requires": { + "@chakra-ui/event-utils": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "framesync": "5.3.0" + } + }, + "@chakra-ui/react-use-previous": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", + "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", + "requires": {} + }, + "@chakra-ui/react-use-safe-layout-effect": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", + "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", + "requires": {} + }, + "@chakra-ui/react-use-size": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", + "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", + "requires": { + "@zag-js/element-size": "0.1.0" + } + }, + "@chakra-ui/react-use-timeout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", + "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + } + }, + "@chakra-ui/react-use-update-effect": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", + "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", + "requires": {} + }, + "@chakra-ui/react-utils": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", + "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", + "requires": { + "@chakra-ui/utils": "2.0.11" + } + }, + "@chakra-ui/select": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", + "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "requires": { + "@chakra-ui/form-control": "2.0.11" + } + }, + "@chakra-ui/shared-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", + "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" + }, + "@chakra-ui/skeleton": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", + "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "requires": { + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/react-use-previous": "2.0.2" + } + }, + "@chakra-ui/slider": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", + "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "requires": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-pan-event": "2.0.5", + "@chakra-ui/react-use-size": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" + } + }, + "@chakra-ui/spinner": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", + "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", + "requires": {} + }, + "@chakra-ui/stat": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", + "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/styled-system": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", + "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", + "requires": { + "csstype": "^3.0.11", + "lodash.mergewith": "4.6.2" + } + }, + "@chakra-ui/switch": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.13.tgz", + "integrity": "sha512-Ikj0L+SLLs/SnfGCiUChaldLIr/aizA1Q9D5+X6LtxpBnixFK/+fNXU+3juPDi9G1IFuNz2IAG51souO7C4nSQ==", + "requires": { + "@chakra-ui/checkbox": "2.2.1" + } + }, + "@chakra-ui/system": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.2.12.tgz", + "integrity": "sha512-I7hFQswp8tG6ogjEMFs5TsCItdCYuNxpLAULgUrLdOlsQeNnHNQhlL4zpIfD+VzguhsNy5lisbegAMKjdghTYg==", + "requires": { + "@chakra-ui/color-mode": "2.1.9", + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/utils": "2.0.11", + "react-fast-compare": "3.2.0" + } + }, + "@chakra-ui/table": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", + "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", + "requires": { + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/tabs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.3.tgz", + "integrity": "sha512-9gUcj49LMt5QQnfJHR/ctr9VPttJ97CtQWuH2Irjb3RXkq1TRrz6wjythPImNQUv1/DYyXp2jsUhoEQc4Oz14Q==", + "requires": { + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/react-children-utils": "2.0.2", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } + }, + "@chakra-ui/tag": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", + "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/textarea": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", + "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "requires": { + "@chakra-ui/form-control": "2.0.11" + } + }, + "@chakra-ui/theme": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.13.tgz", + "integrity": "sha512-qbrrvn9JstyLFV2qyhwgnhwzVs4zSJ4PcS3ScL8kafXJazTRU6onbCcjEZ5mVCw6z8uEz3jcE8Y5KIhVzaB+Xw==", + "requires": { + "@chakra-ui/anatomy": "2.0.7", + "@chakra-ui/theme-tools": "2.0.12" + } + }, + "@chakra-ui/theme-tools": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", + "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", + "requires": { + "@chakra-ui/anatomy": "2.0.7", + "@ctrl/tinycolor": "^3.4.0" + } + }, + "@chakra-ui/toast": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-3.0.13.tgz", + "integrity": "sha512-5GADso5l5Tv1PAL1iocEneLs6U7I8HHMHSMvWdPFSmmJJh0XCH3fboh0C9LiFNIcnEGJmn+A5yGc4vjedA0h2A==", + "requires": { + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-use-timeout": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.13" + } + }, + "@chakra-ui/tooltip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", + "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", + "requires": { + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" + } + }, + "@chakra-ui/transition": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.10.tgz", + "integrity": "sha512-Tkkne8pIIY7f95TKt2aH+IAuQqzHmEt+ICPqvg74QbmIpKE5ptX0cd+P3swBANw4ACnJcCc2vWIaKmVBQ9clLw==", + "requires": {} + }, + "@chakra-ui/utils": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", + "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", + "requires": { + "@types/lodash.mergewith": "4.6.6", + "css-box-model": "1.2.1", + "framesync": "5.3.0", + "lodash.mergewith": "4.6.2" + } + }, + "@chakra-ui/visually-hidden": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", + "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", + "requires": {} + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" + } + }, + "@emotion/cache": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", + "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", + "requires": { + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.1", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.1.3" + } + }, + "@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "requires": { + "@emotion/memoize": "^0.8.0" + } + }, + "@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "@emotion/react": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", + "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/cache": "^11.10.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "requires": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "@emotion/sheet": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", + "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + }, + "@emotion/styled": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", + "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" + } + }, + "@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "requires": {} + }, + "@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + }, + "@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + }, + "@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@graphql-codegen/add": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-3.2.1.tgz", + "integrity": "sha512-w82H/evh8SSGoD3K6K/Oh3kqSdbuU+TgHqMYmmHFxtH692v2xhN/cu1s/TotBQ7r4mO7OQutze7dde2tZEXGEQ==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-codegen/cli": { + "version": "2.13.11", + "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.13.11.tgz", + "integrity": "sha512-PJF36a1i6M7Btj1kB4PWWzBUO3u2BJzsd/6KXxRmEugcxrbaCnbTDDktopy0CZYKdqaFbXaowwbRY8Tk8DV99Q==", + "dev": true, + "requires": { + "@babel/generator": "^7.18.13", + "@babel/template": "^7.18.10", + "@babel/types": "^7.18.13", + "@graphql-codegen/core": "2.6.5", + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/apollo-engine-loader": "^7.3.6", + "@graphql-tools/code-file-loader": "^7.3.1", + "@graphql-tools/git-loader": "^7.2.1", + "@graphql-tools/github-loader": "^7.3.6", + "@graphql-tools/graphql-file-loader": "^7.5.0", + "@graphql-tools/json-file-loader": "^7.4.1", + "@graphql-tools/load": "7.8.0", + "@graphql-tools/prisma-loader": "^7.2.7", + "@graphql-tools/url-loader": "^7.13.2", + "@graphql-tools/utils": "^8.9.0", + "@whatwg-node/fetch": "^0.3.0", + "ansi-escapes": "^4.3.1", + "chalk": "^4.1.0", + "chokidar": "^3.5.2", + "cosmiconfig": "^7.0.0", + "cosmiconfig-typescript-loader": "4.1.1", + "debounce": "^1.2.0", + "detect-indent": "^6.0.0", + "graphql-config": "4.3.6", + "inquirer": "^8.0.0", + "is-glob": "^4.0.1", + "json-to-pretty-yaml": "^1.2.2", + "listr2": "^4.0.5", + "log-symbols": "^4.0.0", + "mkdirp": "^1.0.4", + "shell-quote": "^1.7.3", + "string-env-interpolation": "^1.0.1", + "ts-log": "^2.2.3", + "tslib": "^2.4.0", + "yaml": "^1.10.0", + "yargs": "^17.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "@graphql-codegen/client-preset": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-1.1.3.tgz", + "integrity": "sha512-u4h6X1AcaN93dItnvQEtQjSTpth140Ceac2W3gUNR3IWfFGKLr9HvjNsiIteIFulcUJvLdIAVTfbnO8MUC1Twg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/template": "^7.15.4", + "@graphql-codegen/add": "^3.2.1", + "@graphql-codegen/gql-tag-operations": "1.5.6", + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/typed-document-node": "^2.3.6", + "@graphql-codegen/typescript": "^2.8.1", + "@graphql-codegen/typescript-operations": "^2.5.6", + "@graphql-codegen/visitor-plugin-common": "^2.13.1", + "@graphql-tools/utils": "^8.8.0", + "@graphql-typed-document-node/core": "3.1.1", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-codegen/core": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.6.5.tgz", + "integrity": "sha512-oSbM8vINFxcV1GUasJTDIemMpEG1t6NkBG8odQCt/3ZExCYmoviHhG9vJB89QqJeU5W06qQB6SJn/dg/gv5Aqg==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/schema": "^9.0.0", + "@graphql-tools/utils": "9.0.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.0.0.tgz", + "integrity": "sha512-kaCwyWnURxMsYbxzkfylLqFFelu83jKk3BJOOy0GIuxEtgXVS9v7Y/tojljo69Q+jaZ2YxAi3+d8IpM+hx768A==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-codegen/gql-tag-operations": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-1.5.6.tgz", + "integrity": "sha512-SUeiBnVbV893paHud0Tr05hbZUMBeig6zcDoOw+9xoEivJUlCorOCXB3dXuUoRj+npOMH01IaFeGRbdiMm/RQg==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-codegen/plugin-helpers": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", + "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", + "dev": true, + "requires": { + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-codegen/schema-ast": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-2.5.1.tgz", + "integrity": "sha512-tewa5DEKbglWn7kYyVBkh3J8YQ5ALqAMVmZwiVFIGOao5u66nd+e4HuFqp0u+Jpz4SJGGi0ap/oFrEvlqLjd2A==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-tools/utils": "^8.8.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-codegen/typed-document-node": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-2.3.6.tgz", + "integrity": "sha512-uJqBNj9z/5iIUgLwXsyWmnBaCzRtK+OiZsknTQmjzx/BzKTXK5lrbn06n4KK690wqkelpdZplTtww34ExmHG9Q==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-codegen/typescript": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.8.1.tgz", + "integrity": "sha512-kweV1DOOH2blvMheVL55TT0s9bxkmF/zijN9mdk9pRD20i/rI/46qbh8fNKqy/PV12vZOmZGNL6tigdghG2bqg==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/schema-ast": "^2.5.1", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-codegen/typescript-operations": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-2.5.6.tgz", + "integrity": "sha512-7WqOsVMTUXf+tdt0jGOBuQINLYjPIGlcsnkzXQSPJ7rSGVj99VobVuwgmAeFmJctZ3lgwx3gjPZ0dyCIOBc2/A==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/typescript": "^2.8.1", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-codegen/visitor-plugin-common": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", + "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/optimize": "^1.3.0", + "@graphql-tools/relay-operation-optimizer": "^6.5.0", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/apollo-engine-loader": { + "version": "7.3.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.3.18.tgz", + "integrity": "sha512-Qd1juunK4kH3xgF1aYJIcy8vD/f36Nm713r3ZaY2OKxc1+8d9PIYUlhIvcVUP1SzVxNWLbZm+q918QWFmI9p8A==", + "dev": true, + "requires": { + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/utils": "9.1.0", + "@whatwg-node/fetch": "^0.5.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "requires": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/batch-execute": { + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.11.tgz", + "integrity": "sha512-TWvTSJOG38y5GzKO8TLkURT0XJrQyCCwgCq/kr3YQHkw8BLwLbj3N6Pzp88oMJwAMfYOVCWoN4wU6DigUbOrAw==", + "dev": true, + "requires": { + "@graphql-tools/utils": "9.1.0", + "dataloader": "2.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/code-file-loader": { + "version": "7.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-7.3.11.tgz", + "integrity": "sha512-OMngFSlxthssPFl/VJG3qISXyqjuNF/3fqXFXL6wsCSTve3t13X8Y0oWr3s20fMnJhZNHq0CVtDZutmSUPX7Xw==", + "dev": true, + "requires": { + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/delegate": { + "version": "9.0.15", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-9.0.15.tgz", + "integrity": "sha512-55BTS/EDr/tt+fifY5pM8HwF9fYZo0ukv90Udan1mWnyQTZpBTRhg0MUKnWRl9vcaPkDZIkfJaG2sraFM5gZyw==", + "dev": true, + "requires": { + "@graphql-tools/batch-execute": "8.5.11", + "@graphql-tools/executor": "0.0.7", + "@graphql-tools/schema": "9.0.9", + "@graphql-tools/utils": "9.1.0", + "dataloader": "2.1.0", + "tslib": "~2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/executor": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-0.0.7.tgz", + "integrity": "sha512-NfTru2DjgvuRF1PlYBHFhfsUwNiNBsby8LPlvPtB5duizbw0rQW14h1RM2IfBowR0wH42NRAJZWEW8Nbvlf0Dg==", + "dev": true, + "requires": { + "@graphql-tools/utils": "9.1.0", + "@graphql-typed-document-node/core": "3.1.1", + "@repeaterjs/repeater": "3.0.4", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/git-loader": { + "version": "7.2.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-7.2.11.tgz", + "integrity": "sha512-a/uL8PAgMcXV7wY3LjMXgTcrWt2iGpcYTRHVMN4QgwW9PTAOPcYjxZ9BfNPTEDZt/zk0Gd8YxgtCrg8ui+bLCg==", + "dev": true, + "requires": { + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "is-glob": "4.0.3", + "micromatch": "^4.0.4", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/github-loader": { + "version": "7.3.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.3.18.tgz", + "integrity": "sha512-xQ7L+CWuA6vMCNDfXodCPCDFfoRL+LtFKqxhpA3wU8kVhWOm+QP3sJeVrRj2FAoIKHxcoUYsT4QflqKFj/vsQA==", + "dev": true, + "requires": { + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "@whatwg-node/fetch": "^0.5.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "requires": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/graphql-file-loader": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.5.10.tgz", + "integrity": "sha512-G7/jO0v4sdKik0hyKo1XTXdJoOy6uU6enVvaiK07cVLXjf4+N08orP2ZeiRw6IUxYErPvZgOHJKAZZaeSjIF2A==", + "dev": true, + "requires": { + "@graphql-tools/import": "6.7.11", + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/graphql-tag-pluck": { + "version": "7.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.3.11.tgz", + "integrity": "sha512-BU7ArN8+tv0KG3I4cuMF7MOpaVVOuqF6tnAmMjFqTrYOOJaQeTzweSvy6qtdkHA/sFZuttLa7BHxvJv4B4xS9w==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.8", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/import": { + "version": "6.7.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.7.11.tgz", + "integrity": "sha512-hd3HqNE5JLnOwPcr48vnTShldzRr5sRqrxqj9ouzEnqXUC1Pu/tMqp7p3K8ZPeaMw9h8aiUBBhvNM2sbSW51dQ==", + "dev": true, + "requires": { + "@graphql-tools/utils": "9.1.0", + "resolve-from": "5.0.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/json-file-loader": { + "version": "7.4.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-7.4.11.tgz", + "integrity": "sha512-uxWpbI0sT9i3bUX50joJKMafI7Gnb7W62B8om/qaCkQUjN1UmJmAea+z0afEoko/SsTYbBlWiu8Kw1M0UuzyHQ==", + "dev": true, + "requires": { + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/load": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.8.0.tgz", + "integrity": "sha512-l4FGgqMW0VOqo+NMYizwV8Zh+KtvVqOf93uaLo9wJ3sS3y/egPCgxPMDJJ/ufQZG3oZ/0oWeKt68qop3jY0yZg==", + "dev": true, + "requires": { + "@graphql-tools/schema": "9.0.4", + "@graphql-tools/utils": "8.12.0", + "p-limit": "3.1.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/merge": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.6.tgz", + "integrity": "sha512-uUBokxXi89bj08P+iCvQk3Vew4vcfL5ZM6NTylWi8PIpoq4r5nJ625bRuN8h2uubEdRiH8ntN9M4xkd/j7AybQ==", + "dev": true, + "requires": { + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0" + } + }, + "@graphql-tools/schema": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.4.tgz", + "integrity": "sha512-B/b8ukjs18fq+/s7p97P8L1VMrwapYc3N2KvdG/uNThSazRRn8GsBK0Nr+FH+mVKiUfb4Dno79e3SumZVoHuOQ==", + "dev": true, + "requires": { + "@graphql-tools/merge": "8.3.6", + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + } + }, + "@graphql-tools/utils": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.12.0.tgz", + "integrity": "sha512-TeO+MJWGXjUTS52qfK4R8HiPoF/R7X+qmgtOYd8DTH0l6b+5Y/tlg5aGeUJefqImRq7nvi93Ms40k/Uz4D5CWw==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/merge": { + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.11.tgz", + "integrity": "sha512-IpZh8r8e8FycXaUv04xe5HQH9siD1tkS8MvaO8Wb2FaPXv15XSYP+Wsb2MUStpIqGfQxa6xY/+eEuxv+VqwXyg==", + "dev": true, + "requires": { + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/optimize": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.3.1.tgz", + "integrity": "sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/prisma-loader": { + "version": "7.2.32", + "resolved": "https://registry.npmjs.org/@graphql-tools/prisma-loader/-/prisma-loader-7.2.32.tgz", + "integrity": "sha512-LCAEGtyjzuIUtR8Fua/YsQQZdK1qJhelIMn5weQ5s1R27utDwxYr36YmZkhU0cEQV6JMmXQnnSet+0hTm5sa9w==", + "dev": true, + "requires": { + "@graphql-tools/url-loader": "7.16.12", + "@graphql-tools/utils": "9.1.0", + "@types/js-yaml": "^4.0.0", + "@types/json-stable-stringify": "^1.0.32", + "@types/jsonwebtoken": "^8.5.0", + "chalk": "^4.1.0", + "debug": "^4.3.1", + "dotenv": "^16.0.0", + "graphql-request": "^5.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "isomorphic-fetch": "^3.0.0", + "js-yaml": "^4.0.0", + "json-stable-stringify": "^1.0.1", + "jsonwebtoken": "^8.5.1", + "lodash": "^4.17.20", + "scuid": "^1.1.0", + "tslib": "^2.4.0", + "yaml-ast-parser": "^0.0.43" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/relay-operation-optimizer": { + "version": "6.5.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.11.tgz", + "integrity": "sha512-afIcawEBYnLN/A0oGIi4wKPCSduhYcTkNCbplnFpfm0NSpQ6CfMs30rJwUrsKhkRmTi7wIpOhFk8i1Xe46LT0w==", + "dev": true, + "requires": { + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/schema": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.9.tgz", + "integrity": "sha512-hwg8trUytO5ayQ8bzL3+sAyXcu2rhKt5pLXpLO0/TMTN2nXd3DBO4mqx+Ra4Er2mE/msInGQ5EmZbxVBPv+hSg==", + "dev": true, + "requires": { + "@graphql-tools/merge": "8.3.11", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/url-loader": { + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.16.12.tgz", + "integrity": "sha512-A+T10Co1+6zHoBrmpbJte9o/x6YgIEiiMbyByFAfRU9kDCQdz0c/YJI9NNWsvKLBHh8zaTRp/ZYk/HpJ0hVOxw==", + "dev": true, + "requires": { + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/delegate": "9.0.15", + "@graphql-tools/utils": "9.1.0", + "@graphql-tools/wrap": "9.2.11", + "@types/ws": "^8.0.0", + "@whatwg-node/fetch": "^0.5.0", + "dset": "^3.1.2", + "extract-files": "^11.0.0", + "graphql-ws": "^5.4.1", + "isomorphic-ws": "^5.0.0", + "meros": "^1.1.4", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.11", + "ws": "^8.3.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "requires": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@graphql-tools/utils": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", + "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", "dev": true, - "optional": true + "requires": { + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } }, - "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "@graphql-tools/wrap": { + "version": "9.2.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-9.2.11.tgz", + "integrity": "sha512-QzzyfUQ/roXh7F7Bk0xDOaX9Wp6yafIg3S+rkcSrWrGmxPckCp95YqAtoZLp5HE/XcoZNvw2vD110n0F9nOg6g==", "dev": true, "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@graphql-tools/delegate": "9.0.15", + "@graphql-tools/schema": "9.0.9", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" }, "dependencies": { - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "requires": { - "type-fest": "^0.20.2" + "tslib": "^2.4.0" } }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true } } }, + "@graphql-typed-document-node/core": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "requires": {} + }, "@heroicons/react": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.13.tgz", @@ -9954,6 +15222,12 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, "@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -10326,6 +15600,55 @@ } } }, + "@peculiar/asn1-schema": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.0.tgz", + "integrity": "sha512-DtNLAG4vmDrdSJFPe7rypkcj597chNQL7u+2dBtYo5mh7VW2+im6ke+O0NVr8W1f4re4C3F71LhoMb0Yxqa48Q==", + "dev": true, + "requires": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@peculiar/webcrypto": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.1.tgz", + "integrity": "sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.3.0", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.1", + "webcrypto-core": "^1.7.4" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, "@pkgr/utils": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", @@ -10353,11 +15676,47 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" }, + "@repeaterjs/repeater": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", + "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==", + "dev": true + }, "@stomp/stompjs": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, "@types/chai": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", @@ -10394,18 +15753,39 @@ "integrity": "sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==", "dev": true }, + "@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "dev": true + }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, + "@types/json-stable-stringify": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz", + "integrity": "sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/lodash": { "version": "4.14.188", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.188.tgz", @@ -10483,6 +15863,15 @@ "@types/node": "*" } }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@typescript-eslint/eslint-plugin": { "version": "5.42.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", @@ -10636,6 +16025,23 @@ "react-refresh": "^0.14.0" } }, + "@whatwg-node/fetch": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.3.2.tgz", + "integrity": "sha512-Bs5zAWQs0tXsLa4mRmLw7Psps1EN78vPtgcLpw3qPY8s6UYPUM67zFZ9cy+7tZ64PXhfwzxJn+m7RH2Lq48RNQ==", + "dev": true, + "requires": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "event-target-polyfill": "^0.0.3", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.8.0", + "web-streams-polyfill": "^3.2.0" + } + }, "@xmldom/xmldom": { "version": "0.8.6", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.6.tgz", @@ -10659,6 +16065,15 @@ "dev": true, "optional": true }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, "acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", @@ -10672,6 +16087,31 @@ "dev": true, "requires": {} }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -10717,6 +16157,12 @@ "picomatch": "^2.0.4" } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -10784,6 +16230,31 @@ "es-shim-unscopables": "^1.0.0" } }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "dev": true, + "requires": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -10796,11 +16267,23 @@ "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", + "dev": true + }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -10839,6 +16322,47 @@ "resolve": "^1.19.0" } }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "dev": true + }, + "babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dev": true, + "requires": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -10898,6 +16422,15 @@ "update-browserslist-db": "^1.0.9" } }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -10908,6 +16441,21 @@ "ieee754": "^1.1.13" } }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "requires": { + "streamsearch": "^1.1.0" + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -10923,11 +16471,38 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, "caniuse-lite": { "version": "1.0.30001431", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==" }, + "capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -10960,6 +16535,44 @@ } } }, + "change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", + "dev": true, + "requires": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -10999,6 +16612,12 @@ } } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -11014,6 +16633,16 @@ "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, "cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -11050,6 +16679,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -11064,6 +16699,12 @@ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, "compare-versions": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", @@ -11189,6 +16830,17 @@ "easy-table": "1.1.0" } }, + "constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -11226,6 +16878,36 @@ "yaml": "^1.10.0" } }, + "cosmiconfig-toml-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz", + "integrity": "sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==", + "dev": true, + "requires": { + "@iarna/toml": "^2.2.5" + } + }, + "cosmiconfig-typescript-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.1.1.tgz", + "integrity": "sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg==", + "dev": true, + "requires": {} + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "requires": { + "node-fetch": "2.6.7" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -11256,12 +16938,24 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "dataloader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz", + "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", + "dev": true + }, "date-fns": { "version": "2.29.3", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", "dev": true }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -11270,6 +16964,12 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, "deep-eql": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", @@ -11315,11 +17015,29 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, "detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -11338,13 +17056,44 @@ "esutils": "^2.0.2" } }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true + }, + "dset": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz", + "integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==", + "dev": true + }, "easy-table": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", "dev": true, "requires": { - "wcwidth": ">=1.0.1" + "wcwidth": ">=1.0.1" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" } }, "electron-to-chromium": { @@ -12016,6 +17765,18 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "event-target-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz", + "integrity": "sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ==", + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -12033,6 +17794,12 @@ "tmp": "^0.0.33" } }, + "extract-files": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", + "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==", + "dev": true + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -12090,6 +17857,36 @@ "reusify": "^1.0.4" } }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "dev": true, + "requires": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "dev": true + }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -12188,6 +17985,30 @@ "mime-types": "^2.1.12" } }, + "form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "dev": true + }, + "formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dev": true, + "requires": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "dependencies": { + "web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "dev": true + } + } + }, "framer-motion": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.5.3.tgz", @@ -12421,8 +18242,97 @@ "graphql": { "version": "16.6.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", - "dev": true + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" + }, + "graphql-config": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-4.3.6.tgz", + "integrity": "sha512-i7mAPwc0LAZPnYu2bI8B6yXU5820Wy/ArvmOseDLZIu0OU1UTULEuexHo6ZcHXeT9NvGGaUPQZm8NV3z79YydA==", + "dev": true, + "requires": { + "@graphql-tools/graphql-file-loader": "^7.3.7", + "@graphql-tools/json-file-loader": "^7.3.7", + "@graphql-tools/load": "^7.5.5", + "@graphql-tools/merge": "^8.2.6", + "@graphql-tools/url-loader": "^7.9.7", + "@graphql-tools/utils": "^8.6.5", + "cosmiconfig": "7.0.1", + "cosmiconfig-toml-loader": "1.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "minimatch": "4.2.1", + "string-env-interpolation": "1.0.1", + "ts-node": "^10.8.1", + "tslib": "^2.4.0" + }, + "dependencies": { + "minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "graphql-request": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.0.0.tgz", + "integrity": "sha512-SpVEnIo2J5k2+Zf76cUkdvIRaq5FMZvGQYnA4lUWYbc99m+fHh4CZYRRO/Ff4tCLQ613fzCm3SiDT64ubW5Gyw==", + "requires": { + "@graphql-typed-document-node/core": "^3.1.1", + "cross-fetch": "^3.1.5", + "extract-files": "^9.0.0", + "form-data": "^3.0.0" + }, + "dependencies": { + "extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "graphql-ws": { + "version": "5.11.2", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.11.2.tgz", + "integrity": "sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w==", + "dev": true, + "requires": {} }, "has": { "version": "1.0.3", @@ -12467,6 +18377,16 @@ "has-symbols": "^1.0.2" } }, + "header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "requires": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, "headers-polyfill": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.1.2.tgz", @@ -12492,6 +18412,27 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -12513,6 +18454,12 @@ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, + "immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -12522,12 +18469,24 @@ "resolve-from": "^4.0.0" } }, + "import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "dev": true + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -12636,6 +18595,16 @@ "loose-envify": "^1.0.0" } }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, "is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -12744,6 +18713,15 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, + "is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -12787,6 +18765,15 @@ "has-tostringtag": "^1.0.0" } }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -12827,12 +18814,30 @@ "has-tostringtag": "^1.0.0" } }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -12842,6 +18847,12 @@ "call-bind": "^1.0.2" } }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -12857,6 +18868,23 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "requires": {} + }, "iterare": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", @@ -12911,12 +18939,31 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "json-to-pretty-yaml": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", + "integrity": "sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==", + "dev": true, + "requires": { + "remedial": "^1.0.7", + "remove-trailing-spaces": "^1.0.6" + } + }, "json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", @@ -12932,6 +18979,38 @@ "universalify": "^2.0.0" } }, + "jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "jsx-ast-utils": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", @@ -12942,6 +19021,27 @@ "object.assign": "^4.1.3" } }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "language-subtag-registry": { "version": "0.3.22", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", @@ -12972,6 +19072,22 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, + "listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -13017,6 +19133,42 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -13028,6 +19180,12 @@ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -13089,6 +19247,66 @@ } } }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -13106,6 +19324,24 @@ "get-func-name": "^2.0.0" } }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lower-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", + "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -13124,6 +19360,18 @@ "sourcemap-codec": "^1.4.8" } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -13136,6 +19384,13 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, + "meros": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/meros/-/meros-1.2.1.tgz", + "integrity": "sha512-R2f/jxYqCAGI19KhAvaxSOxALBMkaXWH2a7rOyqQw+ZmizX5bKkEYWLzdhC+U82ZVVPVp6MCXe3EkVligh+12g==", + "dev": true, + "requires": {} + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -13180,6 +19435,12 @@ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -13338,15 +19599,36 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true + }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, "requires": { "whatwg-url": "^5.0.0" } }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, "node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", @@ -13446,6 +19728,12 @@ } } }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -13665,6 +19953,31 @@ "p-limit": "^3.0.2" } }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -13673,6 +19986,17 @@ "callsites": "^3.0.0" } }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -13684,6 +20008,26 @@ "lines-and-columns": "^1.1.6" } }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -13707,6 +20051,21 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true + }, "path-to-regexp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", @@ -13796,6 +20155,15 @@ "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -13817,6 +20185,29 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "pvtsutils": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz", + "integrity": "sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -13991,12 +20382,47 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "relay-runtime": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", + "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "fbjs": "^3.0.0", + "invariant": "^2.2.4" + } + }, + "remedial": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", + "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "remove-trailing-spaces": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz", + "integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==", + "dev": true + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -14028,6 +20454,12 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -14109,17 +20541,46 @@ "loose-envify": "^1.1.0" } }, + "scuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz", + "integrity": "sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==", + "dev": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, + "sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, "set-cookie-parser": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", "dev": true }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -14158,12 +20619,65 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -14219,12 +20733,27 @@ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, + "sponge-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", + "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true + }, "strict-event-emitter": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", @@ -14243,6 +20772,12 @@ "safe-buffer": "~5.2.0" } }, + "string-env-interpolation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", + "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==", + "dev": true + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -14375,6 +20910,15 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, + "swap-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", + "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "synckit": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", @@ -14444,6 +20988,15 @@ "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", "dev": true }, + "title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -14475,8 +21028,7 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "tree-kill": { "version": "1.2.2", @@ -14484,6 +21036,33 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, + "ts-log": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", + "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==", + "dev": true + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, "tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -14556,6 +21135,12 @@ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true }, + "ua-parser-js": { + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", + "dev": true + }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -14568,12 +21153,47 @@ "which-boxed-primitive": "^1.0.2" } }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true + }, + "undici": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "dev": true, + "requires": { + "busboy": "^1.6.0" + } + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, + "unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dev": true, + "requires": { + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, "update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -14583,6 +21203,24 @@ "picocolors": "^1.0.0" } }, + "upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -14634,6 +21272,12 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -14644,6 +21288,12 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-or-promise": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "dev": true + }, "vite": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz", @@ -14695,17 +21345,48 @@ "util": "^0.12.3" } }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true + }, + "webcrypto-core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.5.tgz", + "integrity": "sha512-gaExY2/3EHQlRNNNVSrbG2Cg94Rutl7fAaKILS1w8ZDhGxdFOaw6EbCfHIxPy9vt/xwp5o0VQAx9aySPF6hU1A==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.1.6", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", "dev": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -14733,6 +21414,12 @@ "is-symbol": "^1.0.3" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, "which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", @@ -14796,6 +21483,13 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -14813,6 +21507,12 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, + "yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", + "dev": true + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -14834,6 +21534,12 @@ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/app/src/main/pointer/package.json b/app/src/main/pointer/package.json index c69da402..5e56fa33 100644 --- a/app/src/main/pointer/package.json +++ b/app/src/main/pointer/package.json @@ -6,7 +6,7 @@ "dev": "vite --host", "build": "tsc && vite build", "preview": "vite preview", - "codegen": "openapi-generator-cli generate -g typescript-axios -i http://localhost:8080/v3/api-docs/Public%20API -o ./src/generated/http-client", + "codegen": "gql-gen --config codegen.ts", "lint": "eslint src", "format": "npm run check:format --write", "test": "vitest", @@ -23,12 +23,16 @@ "@stomp/stompjs": "^6.1.2", "axios": "^1.1.3", "framer-motion": "7.5.3", + "graphql": "16.6.0", + "graphql-request": "5.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.38.0" }, "devDependencies": { - "@openapitools/openapi-generator-cli": "^2.5.2", + "@graphql-codegen/cli": "2.13.11", + "@graphql-codegen/client-preset": "1.1.3", + "@openapitools/openapi-generator-cli": "2.5.2", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", "@typescript-eslint/eslint-plugin": "^5.40.0", @@ -45,7 +49,7 @@ "msw": "^0.47.4", "npm-run-all": "^4.1.5", "prettier": "^2.7.1", - "typescript": "^4.6.4", + "typescript": "4.8.4", "vite": "^3.1.0", "vitest": "^0.24.3" } diff --git a/app/src/main/pointer/src/gql/fragment-masking.ts b/app/src/main/pointer/src/gql/fragment-masking.ts new file mode 100644 index 00000000..af0fecab --- /dev/null +++ b/app/src/main/pointer/src/gql/fragment-masking.ts @@ -0,0 +1,40 @@ +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + + +export type FragmentType> = TDocumentType extends DocumentNode< + infer TType, + any +> + ? TType extends { ' $fragmentName'?: infer TKey } + ? TKey extends string + ? { ' $fragmentRefs'?: { [key in TKey]: TType } } + : never + : never + : never; + +// return non-nullable if `fragmentType` is non-nullable +export function useFragment( + _documentNode: DocumentNode, + fragmentType: FragmentType> +): TType; +// return nullable if `fragmentType` is nullable +export function useFragment( + _documentNode: DocumentNode, + fragmentType: FragmentType> | null | undefined +): TType | null | undefined; +// return array of non-nullable if `fragmentType` is array of non-nullable +export function useFragment( + _documentNode: DocumentNode, + fragmentType: ReadonlyArray>> +): ReadonlyArray; +// return array of nullable if `fragmentType` is array of nullable +export function useFragment( + _documentNode: DocumentNode, + fragmentType: ReadonlyArray>> | null | undefined +): ReadonlyArray | null | undefined +export function useFragment( + _documentNode: DocumentNode, + fragmentType: FragmentType> | ReadonlyArray>> | null | undefined +): TType | ReadonlyArray | null | undefined { + return fragmentType as any +} diff --git a/app/src/main/pointer/src/gql/gql.ts b/app/src/main/pointer/src/gql/gql.ts new file mode 100644 index 00000000..c63fcfe2 --- /dev/null +++ b/app/src/main/pointer/src/gql/gql.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +import * as types from './graphql'; +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + +const documents = []; +export function graphql(source: string): unknown; +export function graphql(source: string) { + return (documents as any)[source] ?? {}; +} + +export type DocumentType> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never; \ No newline at end of file diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts new file mode 100644 index 00000000..d920e784 --- /dev/null +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -0,0 +1,68 @@ +/* eslint-disable */ +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; +}; + +export type AccessTokenResponse = { + __typename?: 'AccessTokenResponse'; + accessToken?: Maybe; + tokenType?: Maybe; + ttl?: Maybe; +}; + +export type Mutation = { + __typename?: 'Mutation'; + createRoom?: Maybe; + deleteRoom: Scalars['ID']; + joinRoom?: Maybe; +}; + + +export type MutationDeleteRoomArgs = { + roomId: Scalars['ID']; +}; + + +export type MutationJoinRoomArgs = { + passcode?: InputMaybe; + roomId: Scalars['ID']; + userName?: InputMaybe; +}; + +export type Query = { + __typename?: 'Query'; + health?: Maybe; +}; + +export type RoomResponse = { + __typename?: 'RoomResponse'; + passcode?: Maybe; + roomId: Scalars['ID']; +}; + +export type Subscription = { + __typename?: 'Subscription'; + getUsers?: Maybe>>; +}; + + +export type SubscriptionGetUsersArgs = { + roomId: Scalars['ID']; +}; + +export type UserResponse = { + __typename?: 'UserResponse'; + id: Scalars['ID']; + name?: Maybe; + roomId?: Maybe; +}; diff --git a/app/src/main/pointer/src/gql/index.ts b/app/src/main/pointer/src/gql/index.ts new file mode 100644 index 00000000..407a4706 --- /dev/null +++ b/app/src/main/pointer/src/gql/index.ts @@ -0,0 +1,2 @@ +export * from "./gql" +export * from "./fragment-masking" \ No newline at end of file diff --git a/app/src/main/pointer/tsconfig.json b/app/src/main/pointer/tsconfig.json index b16a9bff..28c607c5 100644 --- a/app/src/main/pointer/tsconfig.json +++ b/app/src/main/pointer/tsconfig.json @@ -2,11 +2,17 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "@/*": ["src/*"] + "@/*": [ + "src/*" + ] }, "target": "ESNext", "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], "allowJs": false, "skipLibCheck": true, "esModuleInterop": false, @@ -20,6 +26,15 @@ "noEmit": true, "jsx": "react-jsx" }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] + "include": [ + "src" + ], + "references": [ + { + "path": "./tsconfig.node.json" + } + ], + "exclude": [ + "src/gql" + ] } From 0d7d801638a5f3784c3e1343b22328630a2df28f Mon Sep 17 00:00:00 2001 From: averak Date: Tue, 8 Nov 2022 18:39:49 +0900 Subject: [PATCH 066/189] =?UTF-8?q?[feat]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E5=8F=96=E5=BE=97API=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/domain/model/TimerModel.java | 19 ++- .../api/controller/TimerController.java | 32 ++++ .../api/response/TimerResponse.java | 4 +- .../infrastructure/api/type/Timer.java | 48 ++++++ .../infrastructure/db/entity/Timer.java | 17 +- .../db/entity/TimerExample.java | 156 ++++++++++++------ .../infrastructure/factory/TimerFactory.java | 2 +- .../usecase/room/CreateRoomUseCase.java | 17 ++ .../usecase/timer/GetTimerUseCase.java | 42 +++++ .../usecase/timer/StartTimerUseCase.java | 4 +- .../main/resources/db/mapper/TimerMapper.xml | 12 +- .../db/mapper/base/TimerBaseMapper.xml | 59 ++++--- .../db/migration/V1_1_1__alter_timer.sql | 6 + .../main/resources/graphql/schema.graphqls | 78 ++++----- .../domain/model/TimerModel_UT.groovy | 8 +- .../api/controller/RoomController_IT.groovy | 11 +- .../api/controller/TimerController_IT.groovy | 91 ++++++++++ .../repository/TimerRepositoryImpl_UT.groovy | 34 ++-- .../usecase/room/CreateRoomUseCase_UT.groovy | 1 + .../usecase/timer/GetTimerUseCase_UT.groovy | 61 +++++++ .../usecase/timer/StartTimerUseCase_UT.groovy | 17 +- 21 files changed, 554 insertions(+), 165 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Timer.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/timer/GetTimerUseCase.java create mode 100644 app/src/main/resources/db/migration/V1_1_1__alter_timer.sql create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/GetTimerUseCase_UT.groovy diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java index 2b7df541..49c39e22 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java @@ -2,6 +2,7 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Optional; import dev.abelab.smartpointer.enums.TimerStatus; import dev.abelab.smartpointer.exception.BadRequestException; @@ -34,12 +35,17 @@ public class TimerModel implements Serializable { TimerStatus status = TimerStatus.READY; /** - * 初期値[s] + * 入力時間 [s] */ - Integer value; + Integer inputTime; /** - * 終了日時 + * 一時停止時点での残り時間 [s] + */ + Optional remainingTimeAtPaused; + + /** + * 終了時刻 */ LocalDateTime finishAt; @@ -47,7 +53,8 @@ public TimerModel(final Timer timer) { this.roomId = timer.getRoomId(); this.status = TimerStatus.find(timer.getStatus()) // .orElseThrow(() -> new InternalServerErrorException(ErrorCode.UNEXPECTED_ERROR)); - this.value = timer.getValue(); + this.inputTime = timer.getInputTime(); + this.remainingTimeAtPaused = Optional.ofNullable(timer.getRemainingTimeAtPaused()); this.finishAt = timer.getFinishAt(); } @@ -62,7 +69,7 @@ public void start(final Integer value) { } this.setStatus(TimerStatus.RUNNING); - this.setValue(value); + this.setInputTime(value); this.setFinishAt(LocalDateTime.now().plusSeconds(value)); } @@ -99,7 +106,7 @@ public void reset() { throw new BadRequestException(ErrorCode.TIMER_CANNOT_BE_RESET); } - this.setFinishAt(LocalDateTime.now().plusSeconds(this.getValue())); + this.setFinishAt(LocalDateTime.now().plusSeconds(this.getInputTime())); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java new file mode 100644 index 00000000..3adf9996 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java @@ -0,0 +1,32 @@ +package dev.abelab.smartpointer.infrastructure.api.controller; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.stereotype.Controller; + +import dev.abelab.smartpointer.infrastructure.api.type.Timer; +import dev.abelab.smartpointer.usecase.timer.GetTimerUseCase; +import lombok.RequiredArgsConstructor; + +/** + * タイマーコントローラ + */ +@Controller +@RequiredArgsConstructor +public class TimerController { + + private final GetTimerUseCase getTimerUseCase; + + /** + * タイマー取得API + * + * @return タイマー + */ + @QueryMapping + public Timer getTimer( // + @Argument final String roomId // + ) { + return new Timer(this.getTimerUseCase.handle(roomId)); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java index 19d6c8ad..196bbab8 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java @@ -28,13 +28,13 @@ public class TimerResponse { Integer value; /** - * 終了日時 + * 終了時刻 */ LocalDateTime finishAt; public TimerResponse(final TimerModel timerModel) { this.status = timerModel.getStatus().getId(); - this.value = timerModel.getValue(); + this.value = timerModel.getInputTime(); this.finishAt = timerModel.getFinishAt(); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Timer.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Timer.java new file mode 100644 index 00000000..29b193c3 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Timer.java @@ -0,0 +1,48 @@ +package dev.abelab.smartpointer.infrastructure.api.type; + +import java.time.LocalDateTime; + +import dev.abelab.smartpointer.domain.model.TimerModel; +import dev.abelab.smartpointer.enums.TimerStatus; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * タイマー + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Timer { + + /** + * 入力時間 [s] + */ + Integer inputTime; + + /** + * 一時停止時点での残り時間 [s] + */ + Integer remainingTimeAtPaused; + + /** + * 終了時刻 + */ + LocalDateTime finishAt; + + /** + * ステータス + */ + TimerStatus status; + + public Timer(final TimerModel timerModel) { + this.inputTime = timerModel.getInputTime(); + this.remainingTimeAtPaused = timerModel.getRemainingTimeAtPaused().orElse(null); + this.finishAt = timerModel.getFinishAt(); + this.status = timerModel.getStatus(); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/Timer.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/Timer.java index 0c06a509..9d2ca181 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/Timer.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/Timer.java @@ -32,18 +32,27 @@ public class Timer { /** * * This field was generated by MyBatis Generator. - * This field corresponds to the database column timer.value + * This field corresponds to the database column timer.finish_at * * @mbg.generated */ - private Integer value; + private LocalDateTime finishAt; /** * * This field was generated by MyBatis Generator. - * This field corresponds to the database column timer.finish_at + * This field corresponds to the database column timer.input_time * * @mbg.generated */ - private LocalDateTime finishAt; + private Integer inputTime; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column timer.remaining_time_at_paused + * + * @mbg.generated + */ + private Integer remainingTimeAtPaused; } \ No newline at end of file diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/TimerExample.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/TimerExample.java index 10b7b8f9..2d936dc2 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/TimerExample.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/TimerExample.java @@ -325,123 +325,183 @@ public Criteria andStatusNotBetween(Integer value1, Integer value2) { return (Criteria) this; } - public Criteria andValueIsNull() { - addCriterion("`value` is null"); + public Criteria andFinishAtIsNull() { + addCriterion("`finish_at` is null"); return (Criteria) this; } - public Criteria andValueIsNotNull() { - addCriterion("`value` is not null"); + public Criteria andFinishAtIsNotNull() { + addCriterion("`finish_at` is not null"); return (Criteria) this; } - public Criteria andValueEqualTo(Integer value) { - addCriterion("`value` =", value, "value"); + public Criteria andFinishAtEqualTo(LocalDateTime value) { + addCriterion("`finish_at` =", value, "finishAt"); return (Criteria) this; } - public Criteria andValueNotEqualTo(Integer value) { - addCriterion("`value` <>", value, "value"); + public Criteria andFinishAtNotEqualTo(LocalDateTime value) { + addCriterion("`finish_at` <>", value, "finishAt"); return (Criteria) this; } - public Criteria andValueGreaterThan(Integer value) { - addCriterion("`value` >", value, "value"); + public Criteria andFinishAtGreaterThan(LocalDateTime value) { + addCriterion("`finish_at` >", value, "finishAt"); return (Criteria) this; } - public Criteria andValueGreaterThanOrEqualTo(Integer value) { - addCriterion("`value` >=", value, "value"); + public Criteria andFinishAtGreaterThanOrEqualTo(LocalDateTime value) { + addCriterion("`finish_at` >=", value, "finishAt"); return (Criteria) this; } - public Criteria andValueLessThan(Integer value) { - addCriterion("`value` <", value, "value"); + public Criteria andFinishAtLessThan(LocalDateTime value) { + addCriterion("`finish_at` <", value, "finishAt"); return (Criteria) this; } - public Criteria andValueLessThanOrEqualTo(Integer value) { - addCriterion("`value` <=", value, "value"); + public Criteria andFinishAtLessThanOrEqualTo(LocalDateTime value) { + addCriterion("`finish_at` <=", value, "finishAt"); return (Criteria) this; } - public Criteria andValueIn(List values) { - addCriterion("`value` in", values, "value"); + public Criteria andFinishAtIn(List values) { + addCriterion("`finish_at` in", values, "finishAt"); return (Criteria) this; } - public Criteria andValueNotIn(List values) { - addCriterion("`value` not in", values, "value"); + public Criteria andFinishAtNotIn(List values) { + addCriterion("`finish_at` not in", values, "finishAt"); return (Criteria) this; } - public Criteria andValueBetween(Integer value1, Integer value2) { - addCriterion("`value` between", value1, value2, "value"); + public Criteria andFinishAtBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("`finish_at` between", value1, value2, "finishAt"); return (Criteria) this; } - public Criteria andValueNotBetween(Integer value1, Integer value2) { - addCriterion("`value` not between", value1, value2, "value"); + public Criteria andFinishAtNotBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("`finish_at` not between", value1, value2, "finishAt"); return (Criteria) this; } - public Criteria andFinishAtIsNull() { - addCriterion("`finish_at` is null"); + public Criteria andInputTimeIsNull() { + addCriterion("`input_time` is null"); return (Criteria) this; } - public Criteria andFinishAtIsNotNull() { - addCriterion("`finish_at` is not null"); + public Criteria andInputTimeIsNotNull() { + addCriterion("`input_time` is not null"); return (Criteria) this; } - public Criteria andFinishAtEqualTo(LocalDateTime value) { - addCriterion("`finish_at` =", value, "finishAt"); + public Criteria andInputTimeEqualTo(Integer value) { + addCriterion("`input_time` =", value, "inputTime"); return (Criteria) this; } - public Criteria andFinishAtNotEqualTo(LocalDateTime value) { - addCriterion("`finish_at` <>", value, "finishAt"); + public Criteria andInputTimeNotEqualTo(Integer value) { + addCriterion("`input_time` <>", value, "inputTime"); return (Criteria) this; } - public Criteria andFinishAtGreaterThan(LocalDateTime value) { - addCriterion("`finish_at` >", value, "finishAt"); + public Criteria andInputTimeGreaterThan(Integer value) { + addCriterion("`input_time` >", value, "inputTime"); return (Criteria) this; } - public Criteria andFinishAtGreaterThanOrEqualTo(LocalDateTime value) { - addCriterion("`finish_at` >=", value, "finishAt"); + public Criteria andInputTimeGreaterThanOrEqualTo(Integer value) { + addCriterion("`input_time` >=", value, "inputTime"); return (Criteria) this; } - public Criteria andFinishAtLessThan(LocalDateTime value) { - addCriterion("`finish_at` <", value, "finishAt"); + public Criteria andInputTimeLessThan(Integer value) { + addCriterion("`input_time` <", value, "inputTime"); return (Criteria) this; } - public Criteria andFinishAtLessThanOrEqualTo(LocalDateTime value) { - addCriterion("`finish_at` <=", value, "finishAt"); + public Criteria andInputTimeLessThanOrEqualTo(Integer value) { + addCriterion("`input_time` <=", value, "inputTime"); return (Criteria) this; } - public Criteria andFinishAtIn(List values) { - addCriterion("`finish_at` in", values, "finishAt"); + public Criteria andInputTimeIn(List values) { + addCriterion("`input_time` in", values, "inputTime"); return (Criteria) this; } - public Criteria andFinishAtNotIn(List values) { - addCriterion("`finish_at` not in", values, "finishAt"); + public Criteria andInputTimeNotIn(List values) { + addCriterion("`input_time` not in", values, "inputTime"); return (Criteria) this; } - public Criteria andFinishAtBetween(LocalDateTime value1, LocalDateTime value2) { - addCriterion("`finish_at` between", value1, value2, "finishAt"); + public Criteria andInputTimeBetween(Integer value1, Integer value2) { + addCriterion("`input_time` between", value1, value2, "inputTime"); return (Criteria) this; } - public Criteria andFinishAtNotBetween(LocalDateTime value1, LocalDateTime value2) { - addCriterion("`finish_at` not between", value1, value2, "finishAt"); + public Criteria andInputTimeNotBetween(Integer value1, Integer value2) { + addCriterion("`input_time` not between", value1, value2, "inputTime"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedIsNull() { + addCriterion("`remaining_time_at_paused` is null"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedIsNotNull() { + addCriterion("`remaining_time_at_paused` is not null"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedEqualTo(Integer value) { + addCriterion("`remaining_time_at_paused` =", value, "remainingTimeAtPaused"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedNotEqualTo(Integer value) { + addCriterion("`remaining_time_at_paused` <>", value, "remainingTimeAtPaused"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedGreaterThan(Integer value) { + addCriterion("`remaining_time_at_paused` >", value, "remainingTimeAtPaused"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedGreaterThanOrEqualTo(Integer value) { + addCriterion("`remaining_time_at_paused` >=", value, "remainingTimeAtPaused"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedLessThan(Integer value) { + addCriterion("`remaining_time_at_paused` <", value, "remainingTimeAtPaused"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedLessThanOrEqualTo(Integer value) { + addCriterion("`remaining_time_at_paused` <=", value, "remainingTimeAtPaused"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedIn(List values) { + addCriterion("`remaining_time_at_paused` in", values, "remainingTimeAtPaused"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedNotIn(List values) { + addCriterion("`remaining_time_at_paused` not in", values, "remainingTimeAtPaused"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedBetween(Integer value1, Integer value2) { + addCriterion("`remaining_time_at_paused` between", value1, value2, "remainingTimeAtPaused"); + return (Criteria) this; + } + + public Criteria andRemainingTimeAtPausedNotBetween(Integer value1, Integer value2) { + addCriterion("`remaining_time_at_paused` not between", value1, value2, "remainingTimeAtPaused"); return (Criteria) this; } } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/TimerFactory.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/TimerFactory.java index bcae458f..23e97294 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/TimerFactory.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/TimerFactory.java @@ -21,7 +21,7 @@ public Timer createTimer(final TimerModel timerModel) { return Timer.builder() // .roomId(timerModel.getRoomId()) // .status(timerModel.getStatus().getId()) // - .value(timerModel.getValue()) // + .inputTime(timerModel.getInputTime()) // .finishAt(timerModel.getFinishAt()) // .build(); } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java index 446e4efa..48752cdd 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java @@ -1,10 +1,15 @@ package dev.abelab.smartpointer.usecase.room; +import java.time.LocalDateTime; + import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import dev.abelab.smartpointer.domain.model.RoomModel; +import dev.abelab.smartpointer.domain.model.TimerModel; import dev.abelab.smartpointer.domain.repository.RoomRepository; +import dev.abelab.smartpointer.domain.repository.TimerRepository; +import dev.abelab.smartpointer.enums.TimerStatus; import lombok.RequiredArgsConstructor; /** @@ -16,6 +21,8 @@ public class CreateRoomUseCase { private final RoomRepository roomRepository; + private final TimerRepository timerRepository; + /** * Handle UseCase * @@ -27,6 +34,16 @@ public RoomModel handle() { final var room = RoomModel.builder().build(); this.roomRepository.insert(room); + // ルームを作成 + final var defaultInputValue = 300; + final var timer = TimerModel.builder() // + .roomId(room.getId()) // + .inputTime(defaultInputValue) // + .finishAt(LocalDateTime.now().plusSeconds(defaultInputValue)) // + .status(TimerStatus.READY) // + .build(); + this.timerRepository.insert(timer); + return room; } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/GetTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/GetTimerUseCase.java new file mode 100644 index 00000000..4e5897e6 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/GetTimerUseCase.java @@ -0,0 +1,42 @@ +package dev.abelab.smartpointer.usecase.timer; + +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import dev.abelab.smartpointer.domain.model.TimerModel; +import dev.abelab.smartpointer.domain.repository.RoomRepository; +import dev.abelab.smartpointer.domain.repository.TimerRepository; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.NotFoundException; +import lombok.RequiredArgsConstructor; + +/** + * タイマー取得ユースケース + */ +@RequiredArgsConstructor +@Component +public class GetTimerUseCase { + + private final RoomRepository roomRepository; + + private final TimerRepository timerRepository; + + /** + * Handle UseCase + * + * @param roomId ルームID + * @return タイマー + */ + @Transactional + public TimerModel handle(final String roomId) { + // ルームの存在チェック + if (!this.roomRepository.existsById(roomId)) { + throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); + } + + // タイマーを取得 + return this.timerRepository.selectByRoomId(roomId) // + .orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_TIMER)); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java index b96c8b46..c8ec3bf5 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java @@ -3,10 +3,8 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import dev.abelab.smartpointer.domain.model.TimerModel; import dev.abelab.smartpointer.domain.repository.RoomRepository; import dev.abelab.smartpointer.domain.repository.TimerRepository; -import dev.abelab.smartpointer.enums.TimerStatus; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.NotFoundException; import dev.abelab.smartpointer.infrastructure.api.request.TimerStartRequest; @@ -38,7 +36,7 @@ public void handle(final String roomId, final TimerStartRequest requestBody) { // タイマーを取得 final var timer = this.timerRepository.selectByRoomId(roomId) // - .orElse(TimerModel.builder().status(TimerStatus.READY).roomId(roomId).build()); + .orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_TIMER)); // タイマーを更新 timer.start(requestBody.getValue()); diff --git a/app/src/main/resources/db/mapper/TimerMapper.xml b/app/src/main/resources/db/mapper/TimerMapper.xml index a8fb4437..f727cc29 100644 --- a/app/src/main/resources/db/mapper/TimerMapper.xml +++ b/app/src/main/resources/db/mapper/TimerMapper.xml @@ -3,12 +3,12 @@ - insert into `timer` (`room_id`, `status`, `value`, `finish_at`) - values (#{roomId}, #{status}, #{value}, #{finishAt}) - ON DUPLICATE KEY UPDATE `room_id` = #{roomId}, - `status` = #{status}, - `value` = #{value}, - `finish_at` = #{finishAt} + insert into `timer` (`room_id`, `status`, `input_time`, `finish_at`) + values (#{roomId}, #{status}, #{inputTime}, #{finishAt}) + ON DUPLICATE KEY UPDATE `room_id` = #{roomId}, + `status` = #{status}, + `input_time` = #{inputTime}, + `finish_at` = #{finishAt} diff --git a/app/src/main/resources/db/mapper/base/TimerBaseMapper.xml b/app/src/main/resources/db/mapper/base/TimerBaseMapper.xml index d70c5f69..e0ab9342 100644 --- a/app/src/main/resources/db/mapper/base/TimerBaseMapper.xml +++ b/app/src/main/resources/db/mapper/base/TimerBaseMapper.xml @@ -8,8 +8,9 @@ --> - + + - `room_id`, `status`, `value`, `finish_at` + `room_id`, `status`, `finish_at`, `input_time`, `remaining_time_at_paused` diff --git a/app/src/main/resources/db/migration/V1_1_1__alter_timer.sql b/app/src/main/resources/db/migration/V1_1_1__alter_timer.sql new file mode 100644 index 00000000..1739e1c5 --- /dev/null +++ b/app/src/main/resources/db/migration/V1_1_1__alter_timer.sql @@ -0,0 +1,6 @@ +ALTER TABLE `timer` + DROP COLUMN `value`; +ALTER TABLE `timer` + ADD `input_time` INT NOT NULL; +ALTER TABLE `timer` + ADD `remaining_time_at_paused` INT NULL; \ No newline at end of file diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 1abcf641..6dab5ea6 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -8,7 +8,7 @@ type Query { """ ヘルスチェックAPI """ - health: Boolean + health: Boolean! """ ユーザリスト取得API @@ -18,7 +18,7 @@ type Query { ルームID """ roomId: ID! - ): Users + ): Users! """ タイマー取得API @@ -28,14 +28,14 @@ type Query { ルームID """ roomId: ID! - ): Timer + ): Timer! } type Mutation { """ ルーム作成API """ - createRoom: Room + createRoom: Room! """ ルーム削除API @@ -59,13 +59,13 @@ type Mutation { """ パスコード """ - passcode: String, + passcode: String!, """ ユーザ名 """ - userName: String - ): AccessToken + userName: String! + ): AccessToken! """ タイマー開始API @@ -74,13 +74,13 @@ type Mutation { """ 入力時間 [s] """ - inputTime: Int - ): Timer + inputTime: Int! + ): Timer! """ タイマー再開API """ - resumeTimer: Timer + resumeTimer: Timer! """ タイマー停止API @@ -89,33 +89,33 @@ type Mutation { """ 一時停止時点での残り時間 [s] """ - remainingTimeAtPaused: Int - ): Timer + remainingTimeAtPaused: Int! + ): Timer! """ タイマーリセットAPI """ - resetTimer: Timer + resetTimer: Timer! """ スライドを進めるAPI """ - goNextSlide: SlideControl + goNextSlide: SlideControl! """ スライドを戻すAPI """ - goPreviousSlide: SlideControl + goPreviousSlide: SlideControl! """ ポインター操作API """ - movePointer: PointerControl + movePointer: PointerControl! """ ポインター切断API """ - disconnectPointer: PointerControl + disconnectPointer: PointerControl! } type Subscription { @@ -127,7 +127,7 @@ type Subscription { ルームID """ roomId: ID! - ): [User] + ): [User!]! """ タイマー購読API @@ -137,7 +137,7 @@ type Subscription { ルームID """ roomId: ID! - ): Timer + ): Timer! """ スライド操作購読API @@ -147,7 +147,7 @@ type Subscription { ルームID """ roomId: ID! - ): SlideControl + ): SlideControl! """ ポインター操作購読API @@ -157,7 +157,7 @@ type Subscription { ルームID """ roomId: ID! - ): PointerControl + ): PointerControl! """ ポインター切断イベント購読API @@ -167,7 +167,7 @@ type Subscription { ルームID """ roomId: ID! - ): User + ): User! } """ @@ -182,7 +182,7 @@ type Room { """ パスコード """ - passcode: String + passcode: String! } """ @@ -192,17 +192,17 @@ type AccessToken { """ トークンタイプ """ - tokenType: String + tokenType: String! """ アクセストークン """ - accessToken: String + accessToken: String! """ TTL [s] """ - ttl: Int + ttl: Int! } """ @@ -217,7 +217,7 @@ type User { """ ルーム名 """ - name: String + name: String! } """ @@ -227,7 +227,7 @@ type Users { """ ユーザリスト """ - users: [User] + users: [User!]! } """ @@ -237,22 +237,22 @@ type Timer { """ 入力時間 [s] """ - inputTime: Int + inputTime: Int! """ - 終了時刻 + 一時停止時点での残り時間 [s] """ - finishAt: String + remainingTimeAtPaused: Int """ - 一時停止時点での残り時間 [s] + 終了時刻 """ - remainingTimeAtPaused: Int + finishAt: String! """ ステータス """ - status: TimerStatus + status: TimerStatus! } """ @@ -262,12 +262,12 @@ type PointerControl { """ 操作方向 """ - orientation: PointerControlOrientation + orientation: PointerControlOrientation! """ 操作者 """ - user: User + user: User! } """ @@ -277,17 +277,17 @@ type PointerControlOrientation { """ α値 """ - alpha: Float + alpha: Float! """ β値 """ - beta: Float + beta: Float! """ γ値 """ - gamma: Float + gamma: Float! } """ diff --git a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy index d5939d49..b73d5e06 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy @@ -32,7 +32,7 @@ class TimerModel_UT extends AbstractSpecification { timer.start(60) then: - timer.value == 60 + timer.inputTime == 60 } def "start: 実行中のタイマーは開始不可"() { @@ -52,7 +52,7 @@ class TimerModel_UT extends AbstractSpecification { def "resume: タイマーを再開する"() { given: final timer = TimerModel.builder() - .value(120) + .inputTime(120) .status(TimerStatus.READY) .build() @@ -60,7 +60,7 @@ class TimerModel_UT extends AbstractSpecification { timer.resume(60) then: - timer.value == 120 + timer.inputTime == 120 } def "resume: 実行中のタイマーは再開不可"() { @@ -109,7 +109,7 @@ class TimerModel_UT extends AbstractSpecification { final oldFinishAt = RandomHelper.mock(LocalDateTime) final timer = TimerModel.builder() .status(TimerStatus.READY) - .value(60) + .inputTime(60) .finishAt(oldFinishAt) .build() diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy index ef2dcf1b..c9b0f3f0 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy @@ -25,11 +25,14 @@ class RoomController_IT extends AbstractController_IT { final response = this.execute(query, "createRoom", RoomResponse) then: - final rooms = sql.rows("SELECT * FROM room") - rooms.size() == 1 + final createdRoom = sql.firstRow("SELECT * FROM room") + createdRoom.id == response.id + createdRoom.passcode == response.passcode - response.id == rooms[0].id - response.passcode == rooms[0].passcode + final createdTimer = sql.firstRow("SELECT * FROM timer") + createdTimer.input_time == 300 + createdTimer.remaining_time_at_paused == null + createdTimer.room_id == createdRoom.id } def "ルーム削除API: 正常系 ルームを削除できる"() { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy new file mode 100644 index 00000000..440ade9f --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -0,0 +1,91 @@ +package dev.abelab.smartpointer.infrastructure.api.controller + + +import dev.abelab.smartpointer.enums.TimerStatus +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.helper.TableHelper +import dev.abelab.smartpointer.infrastructure.api.type.Timer + +/** + * TimerControllerの統合テスト + */ +class TimerController_IT extends AbstractController_IT { + + def "タイマー取得API: 正常系 タイマーを取得できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + "00000000-0000-0000-0000-000000000001" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.PAUSED.id | 60 | 30 | "2000-01-01 10:30:30" + "00000000-0000-0000-0000-000000000001" | TimerStatus.READY.id | 100 | null | "2000-01-01 10:30:30" + } + // @formatter:on + + when: + final query = + """ + query { + getTimer(roomId: "${inputRoomId}") { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + final response = this.execute(query, "getTimer", Timer) + + then: + response.inputTime == expectedInputTime + response.remainingTimeAtPaused == expectedRemainingTimeAtPaused + response.status == expectedStatus + response.finishAt.year == 2000 + response.finishAt.monthValue == 1 + response.finishAt.dayOfMonth == 1 + response.finishAt.hour == 10 + response.finishAt.minute == 30 + response.finishAt.second == 30 + + where: + inputRoomId || expectedStatus | expectedInputTime | expectedRemainingTimeAtPaused + "00000000-0000-0000-0000-000000000000" || TimerStatus.PAUSED | 60 | 30 + "00000000-0000-0000-0000-000000000001" || TimerStatus.READY | 100 | null + } + + def "タイマー取得API: 異常系 ルームもしくはタイマーが存在しない場合は404エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + expect: + final query = + """ + query { + getTimer(roomId: "${inputRoomId}") { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.execute(query, new NotFoundException(expectedErrorCode)) + + where: + inputRoomId || expectedErrorCode + "00000000-0000-0000-0000-000000000000" | ErrorCode.NOT_FOUND_TIMER + "00000000-0000-0000-0000-000000000001" | ErrorCode.NOT_FOUND_ROOM + } + +} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/TimerRepositoryImpl_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/TimerRepositoryImpl_UT.groovy index dcfebee0..832cae56 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/TimerRepositoryImpl_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/TimerRepositoryImpl_UT.groovy @@ -15,7 +15,7 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { @Autowired TimerRepositoryImpl sut - def "selectByRoomId: ルームIDからユーザを取得"() { + def "selectByRoomId: ルームIDからタイマーを取得"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -23,8 +23,8 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { "00000000-0000-0000-0000-000000000000" | "" } TableHelper.insert sql, "timer", { - room_id | status | value | finish_at - "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | "2000-01-01 10:30:30" + room_id | status | input_time | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | "2000-01-01 10:30:30" } // @formatter:on @@ -35,7 +35,7 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { result.isPresent() result.get().roomId == "00000000-0000-0000-0000-000000000000" result.get().status == TimerStatus.READY - result.get().value == 60 + result.get().inputTime == 60 result.get().finishAt.toString() == "2000-01-01T10:30:30" } @@ -47,8 +47,8 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { "00000000-0000-0000-0000-000000000000" | "" } TableHelper.insert sql, "timer", { - room_id | status | value | finish_at - "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | "2000-01-01 00:00:00" + room_id | status | input_time | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | "2000-01-01 00:00:00" } // @formatter:on @@ -59,7 +59,7 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { result.isEmpty() } - def "insert: ルームを作成する"() { + def "insert: タイマーを作成する"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -71,7 +71,7 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { final timer = TimerModel.builder() .roomId("00000000-0000-0000-0000-000000000000") .status(TimerStatus.READY) - .value(60) + .inputTime(60) .finishAt(LocalDateTime.now()) .build() @@ -82,10 +82,10 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { final createdTimer = sql.firstRow("SELECT * FROM timer") createdTimer.room_id == timer.roomId createdTimer.status == timer.status.id - createdTimer.value == timer.value + createdTimer.input_time == timer.inputTime } - def "upsert: ルームが存在する場合は更新する"() { + def "upsert: タイマーが存在する場合は更新する"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -93,15 +93,15 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { "00000000-0000-0000-0000-000000000000" | "" } TableHelper.insert sql, "timer", { - room_id | status | value | finish_at - "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | "2000-01-01 00:00:00" + room_id | status | input_time | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | "2000-01-01 00:00:00" } // @formatter:on final timer = TimerModel.builder() .roomId("00000000-0000-0000-0000-000000000000") .status(TimerStatus.RUNNING) - .value(120) + .inputTime(120) .finishAt(LocalDateTime.now()) .build() @@ -112,10 +112,10 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { final upsertedTimer = sql.firstRow("SELECT * FROM timer") upsertedTimer.room_id == timer.roomId upsertedTimer.status == timer.status.id - upsertedTimer.value == timer.value + upsertedTimer.input_time == timer.inputTime } - def "upsert: ルームが存在しない場合は作成する"() { + def "upsert: タイマーが存在しない場合は作成する"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -127,7 +127,7 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { final timer = TimerModel.builder() .roomId("00000000-0000-0000-0000-000000000000") .status(TimerStatus.RUNNING) - .value(120) + .inputTime(120) .finishAt(LocalDateTime.now()) .build() @@ -138,7 +138,7 @@ class TimerRepositoryImpl_UT extends AbstractRepository_UT { final upsertedTimer = sql.firstRow("SELECT * FROM timer") upsertedTimer.room_id == timer.roomId upsertedTimer.status == timer.status.id - upsertedTimer.value == timer.value + upsertedTimer.input_time == timer.inputTime } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy index 7c850fa3..84730986 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy @@ -17,6 +17,7 @@ class CreateRoomUseCase_UT extends AbstractUseCase_UT { then: 1 * this.roomRepository.insert(_) + 1 * this.timerRepository.insert(_) } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/GetTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/GetTimerUseCase_UT.groovy new file mode 100644 index 00000000..d51229bf --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/GetTimerUseCase_UT.groovy @@ -0,0 +1,61 @@ +package dev.abelab.smartpointer.usecase.timer + +import dev.abelab.smartpointer.domain.model.RoomModel +import dev.abelab.smartpointer.domain.model.TimerModel +import dev.abelab.smartpointer.exception.BaseException +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT +import org.springframework.beans.factory.annotation.Autowired + +/** + * GetTimerUseCaseUseCaseの単体テスト + */ +class GetTimerUseCase_UT extends AbstractUseCase_UT { + + @Autowired + GetTimerUseCase sut + + def "handle: タイマーを取得"() { + given: + final timer = RandomHelper.mock(TimerModel) + final room = RandomHelper.mock(RoomModel) + + when: + final result = this.sut.handle(room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.of(timer) + result == timer + } + + def "handle: ルームが存在しない場合は404エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + + when: + this.sut.handle(room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> false + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + + def "handle: タイマーが存在しない場合は404エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + + when: + this.sut.handle(room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.empty() + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_TIMER)) + } + +} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy index 506bbc85..3c2e29b3 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy @@ -33,10 +33,9 @@ class StartTimerUseCase_UT extends AbstractUseCase_UT { 1 * this.roomRepository.existsById(room.id) >> true 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.of(timer) 1 * timer.start(requestBody.value) - this.timerRepository.upsert(timer) } - def "handle: タイマーが存在しなくても開始可能"() { + def "handle: ルームが存在しない場合は404エラー"() { given: final room = RandomHelper.mock(RoomModel) @@ -46,13 +45,12 @@ class StartTimerUseCase_UT extends AbstractUseCase_UT { this.sut.handle(room.id, requestBody) then: - noExceptionThrown() - 1 * this.roomRepository.existsById(room.id) >> true - 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.empty() - 1 * this.timerRepository.upsert(_) + 1 * this.roomRepository.existsById(room.id) >> false + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) } - def "handle: ルームが存在しない場合は404エラー"() { + def "handle: タイマーが存在しない場合は404エラー"() { given: final room = RandomHelper.mock(RoomModel) @@ -62,9 +60,10 @@ class StartTimerUseCase_UT extends AbstractUseCase_UT { this.sut.handle(room.id, requestBody) then: - 1 * this.roomRepository.existsById(room.id) >> false + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.empty() final BaseException exception = thrown() - verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_TIMER)) } } From c5469109dad5cb5e5b8da80787e8683df3449a7a Mon Sep 17 00:00:00 2001 From: averak Date: Wed, 9 Nov 2022 13:00:29 +0900 Subject: [PATCH 067/189] =?UTF-8?q?[feat]=20WebSocket=E3=82=A8=E3=83=B3?= =?UTF-8?q?=E3=83=89=E3=83=9D=E3=82=A4=E3=83=B3=E3=83=88=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/resources/application.yml | 5 +++++ .../controller/AbstractController_IT.groovy | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/src/main/resources/application.yml b/app/src/main/resources/application.yml index 78b84e7c..0df31d2e 100644 --- a/app/src/main/resources/application.yml +++ b/app/src/main/resources/application.yml @@ -30,6 +30,11 @@ spring: schema: printer: enabled: true + websocket: + path: /graphql-ws + cors: + allowed-origins: "*" + allowed-methods: "*" server: port: 8080 diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy index f96ff5b2..22728a7e 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy @@ -4,18 +4,17 @@ import dev.abelab.smartpointer.AbstractDatabaseSpecification import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.property.AuthProperty import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.graphql.tester.AutoConfigureHttpGraphQlTester import org.springframework.context.MessageSource -import org.springframework.graphql.test.tester.WebGraphQlTester +import org.springframework.graphql.test.tester.GraphQlTester +import org.springframework.graphql.test.tester.WebSocketGraphQlTester +import org.springframework.web.reactive.socket.client.ReactorNettyWebSocketClient /** * Controller統合テストの基底クラス */ -@AutoConfigureHttpGraphQlTester abstract class AbstractController_IT extends AbstractDatabaseSpecification { - @Autowired - private WebGraphQlTester graphQlTester + private GraphQlTester graphQlTester @Autowired private MessageSource messageSource @@ -67,4 +66,14 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { return this.messageSource.getMessage(messageKey, args, Locale.ENGLISH) } + /** + * setup before test class + */ + def setup() { + this.graphQlTester = WebSocketGraphQlTester.builder( // + "ws://localhost:${PORT}/graphql-ws", + new ReactorNettyWebSocketClient() // + ).build() + } + } From ad8891b91f225a032f2839f71212892dcc8c69ec Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Wed, 9 Nov 2022 18:53:58 +0900 Subject: [PATCH 068/189] =?UTF-8?q?refactor:=20model=20=E3=81=AE=20import?= =?UTF-8?q?=20=E3=82=92=E3=81=8D=E3=82=8C=E3=81=84=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/controller/index.ts | 8 +- desktop/packages/main/src/model/index.ts | 302 +++++++++--------- desktop/packages/main/src/view/tray.ts | 4 +- .../src/view/window/cumstomPointerType.ts | 6 +- .../main/src/view/window/inviteLink.ts | 4 +- .../main/src/view/window/pointerOverlay.ts | 10 +- 6 files changed, 165 insertions(+), 169 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index f5953673..5c2ac021 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -7,7 +7,7 @@ import { import { randomUUID } from "crypto"; import { roomApi } from "@/api"; -import * as model from "@/model"; +import { model } from "@/model"; import { activate, listenRoomSubscription, @@ -107,7 +107,7 @@ export const addCustomPointerType = () => { updateTray(); - store.set("customPointerTypes", model.getState().customPointerTypes); + store.set("customPointerTypes", model.state.customPointerTypes); updateCustomPointerTypeInCustomPointerTypesWindow(); }; @@ -119,7 +119,7 @@ export const removeCustomPointerType = ( updateTray(); - store.set("customPointerTypes", model.getState().customPointerTypes); + store.set("customPointerTypes", model.state.customPointerTypes); updateCustomPointerTypeInCustomPointerTypesWindow(); }; @@ -131,7 +131,7 @@ export const updateCustomPointerType = ( updateTray(); - store.set("customPointerTypes", model.getState().customPointerTypes); + store.set("customPointerTypes", model.state.customPointerTypes); updateCustomPointerTypeInCustomPointerTypesWindow(); }; diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 645dc8b9..efc1db59 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -10,157 +10,153 @@ import { Room, State } from "@/types"; let state: State; -export const getState = (): State => state; - -export const initialize = (customPointerTypes: CustomPointerType[]) => { - state = { - status: "READY", - customPointerTypes, - }; -}; - -export const startCreatingRoom = () => { - if (state.status !== "READY") { - throw new Error("Cannot start creating room when not in READY state"); - } - - state = { - ...state, - status: "CREATING", - }; -}; - -export const createdRoom = (room: Room) => { - if (state.status !== "CREATING") { - throw new Error("Cannot create room when not in CREATING state"); - } - - state = { - ...state, - status: "CREATED", - room, - joinedUsers: new Map(), - activePointers: new Map(), - selectedPointerType: builtInPointers[0]!, - }; -}; - -export const closeRoom = () => { - if (state.status !== "CREATED") { - throw new Error("Cannot close room when not in CREATED state"); - } - - state = { - ...state, - status: "READY", - room: undefined, - joinedUsers: undefined, - activePointers: undefined, - }; -}; - -export const joinedRoom = (user: User) => { - if (state.status !== "CREATED") { - throw new Error("Cannot join room when not in CREATED state"); - } - - state = { - ...state, - joinedUsers: new Map(state.joinedUsers).set(user.id, user), - }; -}; - -export const leftRoom = (user: User) => { - if (state.status !== "CREATED") { - throw new Error("Cannot leave room when not in CREATED state"); - } - - const joinedUsers = new Map(state.joinedUsers); - - joinedUsers.delete(user.id); - - state = { - ...state, - joinedUsers, - }; -}; - -export const updatePointer = (user: User, orientation: PointerOrientation) => { - if (state.status !== "CREATED") { - throw new Error("Cannot update pointer when not in CREATED state"); - } - - state = { - ...state, - activePointers: new Map(state.activePointers).set(user.id, { - orientation, - user, - }), - }; -}; - -export const deactivatePointer = (user: User) => { - if (state.status !== "CREATED") { - throw new Error("Cannot deactivate pointer when not in CREATED state"); - } - - const activePointers = new Map(state.activePointers); - - activePointers.delete(user.id); - - state = { - ...state, - activePointers, - }; -}; - -export const selectedPointer = (selectedPointerType: PointerType) => { - if (state.status !== "CREATED") { - throw new Error("Cannot select pointer when not in CREATED state"); - } - - state = { - ...state, - selectedPointerType, - }; -}; - -export const updatedCustomPointerTypes = ( - customPointerTypes: CustomPointerType[] -) => { - state = { - ...state, - customPointerTypes, - }; -}; - -export const addedCustomPointerType = ( - customPointerType: CustomPointerType -) => { - state = { - ...state, - customPointerTypes: [customPointerType, ...state.customPointerTypes], - }; -}; - -export const removedCustomPointerType = ( - customPointerType: CustomPointerType -) => { - state = { - ...state, - customPointerTypes: state.customPointerTypes.filter( - (type) => type.id !== customPointerType.id - ), - }; -}; - -export const updatedCustomPointerType = ( - customPointerType: CustomPointerType -) => { - state = { - ...state, - customPointerTypes: state.customPointerTypes.map((type) => - type.id === customPointerType.id ? customPointerType : type - ), - }; +export const model = { + get state() { + return state; + }, + + initialize: (customPointerTypes: CustomPointerType[]) => { + state = { + status: "READY", + customPointerTypes, + }; + }, + + startCreatingRoom: () => { + if (state.status !== "READY") { + throw new Error("Cannot start creating room when not in READY state"); + } + + state = { + ...state, + status: "CREATING", + }; + }, + + createdRoom: (room: Room) => { + if (state.status !== "CREATING") { + throw new Error("Cannot create room when not in CREATING state"); + } + + state = { + ...state, + status: "CREATED", + room, + joinedUsers: new Map(), + activePointers: new Map(), + selectedPointerType: builtInPointers[0]!, + }; + }, + + closeRoom: () => { + if (state.status !== "CREATED") { + throw new Error("Cannot close room when not in CREATED state"); + } + + state = { + ...state, + status: "READY", + room: undefined, + joinedUsers: undefined, + activePointers: undefined, + }; + }, + + joinedRoom: (user: User) => { + if (state.status !== "CREATED") { + throw new Error("Cannot join room when not in CREATED state"); + } + + state = { + ...state, + joinedUsers: new Map(state.joinedUsers).set(user.id, user), + }; + }, + + leftRoom: (user: User) => { + if (state.status !== "CREATED") { + throw new Error("Cannot leave room when not in CREATED state"); + } + + const joinedUsers = new Map(state.joinedUsers); + + joinedUsers.delete(user.id); + + state = { + ...state, + joinedUsers, + }; + }, + + updatePointer: (user: User, orientation: PointerOrientation) => { + if (state.status !== "CREATED") { + throw new Error("Cannot update pointer when not in CREATED state"); + } + + state = { + ...state, + activePointers: new Map(state.activePointers).set(user.id, { + orientation, + user, + }), + }; + }, + + deactivatePointer: (user: User) => { + if (state.status !== "CREATED") { + throw new Error("Cannot deactivate pointer when not in CREATED state"); + } + + const activePointers = new Map(state.activePointers); + + activePointers.delete(user.id); + + state = { + ...state, + activePointers, + }; + }, + + selectedPointer: (selectedPointerType: PointerType) => { + if (state.status !== "CREATED") { + throw new Error("Cannot select pointer when not in CREATED state"); + } + + state = { + ...state, + selectedPointerType, + }; + }, + + updatedCustomPointerTypes: (customPointerTypes: CustomPointerType[]) => { + state = { + ...state, + customPointerTypes, + }; + }, + + addedCustomPointerType: (customPointerType: CustomPointerType) => { + state = { + ...state, + customPointerTypes: [customPointerType, ...state.customPointerTypes], + }; + }, + + removedCustomPointerType: (customPointerType: CustomPointerType) => { + state = { + ...state, + customPointerTypes: state.customPointerTypes.filter( + (type) => type.id !== customPointerType.id + ), + }; + }, + + updatedCustomPointerType: (customPointerType: CustomPointerType) => { + state = { + ...state, + customPointerTypes: state.customPointerTypes.map((type) => + type.id === customPointerType.id ? customPointerType : type + ), + }; + }, }; diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index f814c9be..70dbdf7a 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -5,7 +5,7 @@ import { join } from "path"; import { assetsPath } from "../path"; import * as controller from "@/controller"; -import { getState } from "@/model"; +import { model } from "@/model"; import { State } from "@/types"; type MenuTemplate = ( @@ -114,7 +114,7 @@ const getIconFileName = () => { }; export const updateTray = () => { - const state = getState(); + const state = model.state; if (trayInstance === null) { const iconPath = join(assetsPath, getIconFileName()); diff --git a/desktop/packages/main/src/view/window/cumstomPointerType.ts b/desktop/packages/main/src/view/window/cumstomPointerType.ts index 29ba8df3..3643a734 100644 --- a/desktop/packages/main/src/view/window/cumstomPointerType.ts +++ b/desktop/packages/main/src/view/window/cumstomPointerType.ts @@ -3,7 +3,7 @@ import { app, BrowserWindow, ipcMain } from "electron"; import { join } from "path"; import * as controller from "@/controller"; -import { getState } from "@/model"; +import { model } from "@/model"; import { loadFile } from "./loadFile"; @@ -41,7 +41,7 @@ export const closeInviteLinkWindow = () => { }; export const updateCustomPointerTypeInCustomPointerTypesWindow = () => { - const { customPointerTypes } = getState(); + const { customPointerTypes } = model.state; customPointerTypesWindow?.webContents.send( "onUpdateCustomPointerTypes", customPointerTypes @@ -49,7 +49,7 @@ export const updateCustomPointerTypeInCustomPointerTypesWindow = () => { }; ipcMain.handle("getCustomPointerTypes", () => { - return getState().customPointerTypes; + return model.state.customPointerTypes; }); ipcMain.on( diff --git a/desktop/packages/main/src/view/window/inviteLink.ts b/desktop/packages/main/src/view/window/inviteLink.ts index 8eb4325a..d86121a6 100644 --- a/desktop/packages/main/src/view/window/inviteLink.ts +++ b/desktop/packages/main/src/view/window/inviteLink.ts @@ -1,13 +1,13 @@ import { BrowserWindow } from "electron"; -import { getState } from "@/model"; +import { model } from "@/model"; import { loadFile } from "./loadFile"; let inviteLinkWindow: BrowserWindow | null = null; export const showInviteLinkWindow = async () => { - const state = getState(); + const state = model.state; if (state.status !== "CREATED") { throw new Error("Cannot show invite link window when not in CREATED state"); diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 84e520b7..7a7c310e 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -6,7 +6,7 @@ import { import { app, BrowserWindow, ipcMain, screen } from "electron"; import { join } from "node:path"; -import { getState } from "@/model"; +import { model } from "@/model"; import { loadFile } from "./loadFile"; @@ -15,7 +15,7 @@ let overlayWindow: BrowserWindow | null = null; const tanDeg = (deg: number) => Math.tan((deg * Math.PI) / 180); export const showOverlayWindow = async () => { - const state = getState(); + const state = model.state; if (state.status !== "CREATED") { throw new Error("Cannot show overlay window when not in CREATED state"); @@ -70,7 +70,7 @@ export const toggleOverlayWindowDevToolsInOverlayWindow = () => { }; export const updatePointerInOverlayWindow = () => { - const state = getState(); + const state = model.state; if (state.status !== "CREATED") { throw new Error("Cannot update pointer when not in CREATED state"); @@ -94,7 +94,7 @@ export const updatePointerInOverlayWindow = () => { }; export const updatePointerTypeInOverlayWindow = () => { - const state = getState(); + const state = model.state; if (state.status !== "CREATED") { throw new Error("Cannot update pointer type when not in CREATED state"); @@ -114,7 +114,7 @@ export const closeOverlayWindow = () => { }; ipcMain.handle("getPointers", (): GetPointerResult => { - const state = getState(); + const state = model.state; if (state.status !== "CREATED") { throw new Error("Cannot get pointers when not in CREATED state"); From 10c3f7319dda520b7bfc13fbf9248c7c89dd4010 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Wed, 9 Nov 2022 19:27:06 +0900 Subject: [PATCH 069/189] =?UTF-8?q?refactor:=20view=20=E3=81=AE=20import?= =?UTF-8?q?=20=E3=82=92=E3=81=8D=E3=82=8C=E3=81=84=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/controller/index.ts | 51 ++---- .../src/{view => utils}/window/loadFile.ts | 0 desktop/packages/main/src/view/index.ts | 13 ++ desktop/packages/main/src/view/tray.ts | 18 +- .../src/view/window/cumstomPointerType.ts | 71 -------- .../main/src/view/window/customPointerType.ts | 72 ++++++++ .../main/src/view/window/inviteLink.ts | 67 ++++---- .../main/src/view/window/pointerOverlay.ts | 159 +++++++++--------- 8 files changed, 228 insertions(+), 223 deletions(-) rename desktop/packages/main/src/{view => utils}/window/loadFile.ts (100%) create mode 100644 desktop/packages/main/src/view/index.ts delete mode 100644 desktop/packages/main/src/view/window/cumstomPointerType.ts create mode 100644 desktop/packages/main/src/view/window/customPointerType.ts diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 5c2ac021..87cb52b8 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -14,27 +14,12 @@ import { unsubscribeRoomSubscription, } from "@/stomp"; import { store } from "@/store"; -import { updateTray } from "@/view/tray"; -import { - showCustomPointerTypesWindow, - updateCustomPointerTypeInCustomPointerTypesWindow, -} from "@/view/window/cumstomPointerType"; -import { - closeInviteLinkWindow, - showInviteLinkWindow, -} from "@/view/window/inviteLink"; -import { - closeOverlayWindow, - showOverlayWindow, - updatePointerInOverlayWindow, - updatePointerTypeInOverlayWindow, - toggleOverlayWindowDevToolsInOverlayWindow, -} from "@/view/window/pointerOverlay"; +import { view } from "@/view"; export const initialize = () => { model.initialize(store.get("customPointerTypes")); - updateTray(); + view.tray.update(); }; export const createRoom = async () => { @@ -50,8 +35,8 @@ export const createRoom = async () => { listenRoomSubscription(data.roomId); - updateTray(); - await showOverlayWindow(); + view.tray.update(); + await view.window.pointerOverlay.show(); await showInviteLink(); }; @@ -64,8 +49,8 @@ export const leftRoom = (user: User) => { }; export const closeRoom = () => { - closeOverlayWindow(); - closeInviteLinkWindow(); + view.window.pointerOverlay.close(); + view.window.inviteLink.close(); unsubscribeRoomSubscription(); model.closeRoom(); @@ -74,27 +59,27 @@ export const closeRoom = () => { export const pointerUpdated = (user: User, orientation: PointerOrientation) => { model.updatePointer(user, orientation); - updatePointerInOverlayWindow(); + view.window.pointerOverlay.updatePointer(); }; export const pointerDeactivated = (user: User) => { model.deactivatePointer(user); - updatePointerInOverlayWindow(); + view.window.pointerOverlay.updatePointer(); }; export const selectedPointer = (selectedPointerType: PointerType) => { model.selectedPointer(selectedPointerType); - updatePointerTypeInOverlayWindow(); + view.window.pointerOverlay.updatePointerType(); }; export const showInviteLink = async () => { - await showInviteLinkWindow(); + await view.window.inviteLink.show(); }; export const toggleOverlayWindowDevTools = () => { - toggleOverlayWindowDevToolsInOverlayWindow(); + view.window.pointerOverlay.toggleDevTools(); }; export const addCustomPointerType = () => { @@ -105,11 +90,11 @@ export const addCustomPointerType = () => { model.addedCustomPointerType(customPointerType); - updateTray(); + view.tray.update(); store.set("customPointerTypes", model.state.customPointerTypes); - updateCustomPointerTypeInCustomPointerTypesWindow(); + view.window.customPointerType.updateCustomPointerType(); }; export const removeCustomPointerType = ( @@ -117,11 +102,11 @@ export const removeCustomPointerType = ( ) => { model.removedCustomPointerType(customPointerType); - updateTray(); + view.tray.update(); store.set("customPointerTypes", model.state.customPointerTypes); - updateCustomPointerTypeInCustomPointerTypesWindow(); + view.window.customPointerType.updateCustomPointerType(); }; export const updateCustomPointerType = ( @@ -129,13 +114,13 @@ export const updateCustomPointerType = ( ) => { model.updatedCustomPointerType(customPointerType); - updateTray(); + view.tray.update(); store.set("customPointerTypes", model.state.customPointerTypes); - updateCustomPointerTypeInCustomPointerTypesWindow(); + view.window.customPointerType.updateCustomPointerType(); }; export const showCustomPointerTypes = () => { - showCustomPointerTypesWindow(); + view.window.customPointerType.show(); }; diff --git a/desktop/packages/main/src/view/window/loadFile.ts b/desktop/packages/main/src/utils/window/loadFile.ts similarity index 100% rename from desktop/packages/main/src/view/window/loadFile.ts rename to desktop/packages/main/src/utils/window/loadFile.ts diff --git a/desktop/packages/main/src/view/index.ts b/desktop/packages/main/src/view/index.ts new file mode 100644 index 00000000..b236ad8d --- /dev/null +++ b/desktop/packages/main/src/view/index.ts @@ -0,0 +1,13 @@ +import { tray } from "./tray"; +import { customPointerType } from "./window/customPointerType"; +import { inviteLink } from "./window/inviteLink"; +import { pointerOverlay } from "./window/pointerOverlay"; + +export const view = { + window: { + customPointerType, + inviteLink, + pointerOverlay, + }, + tray, +}; diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index 70dbdf7a..996f9573 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -113,18 +113,20 @@ const getIconFileName = () => { return "tray-icon.png"; }; -export const updateTray = () => { - const state = model.state; +export const tray = { + update: () => { + const state = model.state; - if (trayInstance === null) { - const iconPath = join(assetsPath, getIconFileName()); + if (trayInstance === null) { + const iconPath = join(assetsPath, getIconFileName()); - trayInstance = new Tray(iconPath); + trayInstance = new Tray(iconPath); - trayInstance.setToolTip("スマートポインター"); - } + trayInstance.setToolTip("スマートポインター"); + } - trayInstance.setContextMenu(Menu.buildFromTemplate(menuTemplate(state))); + trayInstance.setContextMenu(Menu.buildFromTemplate(menuTemplate(state))); + }, }; nativeTheme.on("updated", () => { diff --git a/desktop/packages/main/src/view/window/cumstomPointerType.ts b/desktop/packages/main/src/view/window/cumstomPointerType.ts deleted file mode 100644 index 3643a734..00000000 --- a/desktop/packages/main/src/view/window/cumstomPointerType.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { CustomPointerType } from "@smartpointer-desktop/shared"; -import { app, BrowserWindow, ipcMain } from "electron"; -import { join } from "path"; - -import * as controller from "@/controller"; -import { model } from "@/model"; - -import { loadFile } from "./loadFile"; - -let customPointerTypesWindow: BrowserWindow | null = null; - -export const showCustomPointerTypesWindow = async () => { - if ( - customPointerTypesWindow === null || - customPointerTypesWindow.isDestroyed() - ) { - customPointerTypesWindow = new BrowserWindow({ - width: 800, - height: 600, - title: "カスタムポインターの設定 - スマートポインター", - show: false, - webPreferences: { - preload: join( - app.getAppPath(), - "packages", - "preload", - "dist", - "index.cjs" - ), - }, - }); - - await loadFile(customPointerTypesWindow, "customPointerTypes.html"); - } - - customPointerTypesWindow.show(); -}; - -export const closeInviteLinkWindow = () => { - customPointerTypesWindow?.close(); -}; - -export const updateCustomPointerTypeInCustomPointerTypesWindow = () => { - const { customPointerTypes } = model.state; - customPointerTypesWindow?.webContents.send( - "onUpdateCustomPointerTypes", - customPointerTypes - ); -}; - -ipcMain.handle("getCustomPointerTypes", () => { - return model.state.customPointerTypes; -}); - -ipcMain.on( - "updateCustomPointerType", - (_, customPointerType: CustomPointerType) => { - controller.updateCustomPointerType(customPointerType); - } -); - -ipcMain.on("addCustomPointerType", () => { - controller.addCustomPointerType(); -}); - -ipcMain.on( - "removeCustomPointerType", - (_, customPointerType: CustomPointerType) => { - controller.removeCustomPointerType(customPointerType); - } -); diff --git a/desktop/packages/main/src/view/window/customPointerType.ts b/desktop/packages/main/src/view/window/customPointerType.ts new file mode 100644 index 00000000..3278430d --- /dev/null +++ b/desktop/packages/main/src/view/window/customPointerType.ts @@ -0,0 +1,72 @@ +import { CustomPointerType } from "@smartpointer-desktop/shared"; +import { app, BrowserWindow, ipcMain } from "electron"; +import { join } from "path"; + +import * as controller from "@/controller"; +import { model } from "@/model"; +import { loadFile } from "@/utils/window/loadFile"; + +let customPointerTypesWindow: BrowserWindow | null = null; + +export const customPointerType = { + show: async () => { + if ( + customPointerTypesWindow === null || + customPointerTypesWindow.isDestroyed() + ) { + customPointerTypesWindow = new BrowserWindow({ + width: 800, + height: 600, + title: "カスタムポインターの設定 - スマートポインター", + show: false, + webPreferences: { + preload: join( + app.getAppPath(), + "packages", + "preload", + "dist", + "index.cjs" + ), + }, + }); + + await loadFile(customPointerTypesWindow, "customPointerTypes.html"); + } + + customPointerTypesWindow.show(); + }, + + close: () => { + customPointerTypesWindow?.close(); + }, + + updateCustomPointerType: () => { + const { customPointerTypes } = model.state; + customPointerTypesWindow?.webContents.send( + "onUpdateCustomPointerTypes", + customPointerTypes + ); + }, +}; + +ipcMain.handle("getCustomPointerTypes", () => { + return model.state.customPointerTypes; +}); + +ipcMain.on( + "updateCustomPointerType", + (_, customPointerType: CustomPointerType) => { + controller.updateCustomPointerType(customPointerType); + } +); + +ipcMain.on("addCustomPointerType", () => { + controller.addCustomPointerType(); +}); + +ipcMain.on( + "removeCustomPointerType", + (_, customPointerType: CustomPointerType) => { + controller.removeCustomPointerType(customPointerType); + } +); diff --git a/desktop/packages/main/src/view/window/inviteLink.ts b/desktop/packages/main/src/view/window/inviteLink.ts index d86121a6..e85daa63 100644 --- a/desktop/packages/main/src/view/window/inviteLink.ts +++ b/desktop/packages/main/src/view/window/inviteLink.ts @@ -1,39 +1,42 @@ import { BrowserWindow } from "electron"; import { model } from "@/model"; - -import { loadFile } from "./loadFile"; +import { loadFile } from "@/utils/window/loadFile"; let inviteLinkWindow: BrowserWindow | null = null; -export const showInviteLinkWindow = async () => { - const state = model.state; - - if (state.status !== "CREATED") { - throw new Error("Cannot show invite link window when not in CREATED state"); - } - - if (inviteLinkWindow === null || inviteLinkWindow.isDestroyed()) { - inviteLinkWindow = new BrowserWindow({ - width: 600, - height: 400, - title: "招待リンク - スマートポインター", - show: false, - }); - - await loadFile(inviteLinkWindow, "link.html", { - roomId: state.room.roomId, - passcode: state.room.passcode, - origin: - process.env["USE_DEV_BACKEND"] === "true" - ? "https://REPLACE_HERE_TO_ADDR:8080" - : "https://smartpointer.abelab.dev", - }); - } - - inviteLinkWindow.show(); -}; - -export const closeInviteLinkWindow = () => { - inviteLinkWindow?.close(); +export const inviteLink = { + show: async () => { + const state = model.state; + + if (state.status !== "CREATED") { + throw new Error( + "Cannot show invite link window when not in CREATED state" + ); + } + + if (inviteLinkWindow === null || inviteLinkWindow.isDestroyed()) { + inviteLinkWindow = new BrowserWindow({ + width: 600, + height: 400, + title: "招待リンク - スマートポインター", + show: false, + }); + + await loadFile(inviteLinkWindow, "link.html", { + roomId: state.room.roomId, + passcode: state.room.passcode, + origin: + process.env["USE_DEV_BACKEND"] === "true" + ? "https://REPLACE_HERE_TO_ADDR:8080" + : "https://smartpointer.abelab.dev", + }); + } + + inviteLinkWindow.show(); + }, + + close: () => { + inviteLinkWindow?.close(); + }, }; diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 7a7c310e..3344e526 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -7,110 +7,111 @@ import { app, BrowserWindow, ipcMain, screen } from "electron"; import { join } from "node:path"; import { model } from "@/model"; - -import { loadFile } from "./loadFile"; +import { loadFile } from "@/utils/window/loadFile"; let overlayWindow: BrowserWindow | null = null; const tanDeg = (deg: number) => Math.tan((deg * Math.PI) / 180); -export const showOverlayWindow = async () => { - const state = model.state; +export const pointerOverlay = { + show: async () => { + const state = model.state; + + if (state.status !== "CREATED") { + throw new Error("Cannot show overlay window when not in CREATED state"); + } + + const { width, height } = screen.getPrimaryDisplay().workAreaSize; + overlayWindow = new BrowserWindow({ + width, + height, + title: "スマートポインター", + show: false, + frame: false, + transparent: true, + focusable: false, + hasShadow: false, + webPreferences: { + // load custom pointer image from local file + webSecurity: !import.meta.env.DEV, + preload: join( + app.getAppPath(), + "packages", + "preload", + "dist", + "index.cjs" + ), + }, + }); - if (state.status !== "CREATED") { - throw new Error("Cannot show overlay window when not in CREATED state"); - } + overlayWindow.setAlwaysOnTop(true, "screen-saver"); + overlayWindow.setVisibleOnAllWorkspaces(true, { + visibleOnFullScreen: true, + }); + overlayWindow.setIgnoreMouseEvents(true); - const { width, height } = screen.getPrimaryDisplay().workAreaSize; - overlayWindow = new BrowserWindow({ - width, - height, - title: "スマートポインター", - show: false, - frame: false, - transparent: true, - focusable: false, - hasShadow: false, - webPreferences: { - // load custom pointer image from local file - webSecurity: !import.meta.env.DEV, - preload: join( - app.getAppPath(), - "packages", - "preload", - "dist", - "index.cjs" - ), - }, - }); - - overlayWindow.setAlwaysOnTop(true, "screen-saver"); - overlayWindow.setVisibleOnAllWorkspaces(true, { - visibleOnFullScreen: true, - }); - overlayWindow.setIgnoreMouseEvents(true); - - await loadFile(overlayWindow, "overlay.html"); - - overlayWindow.show(); -}; + await loadFile(overlayWindow, "overlay.html"); -export const toggleOverlayWindowDevToolsInOverlayWindow = () => { - if (overlayWindow === null || overlayWindow.isDestroyed()) { - return; - } + overlayWindow.show(); + }, - if (!overlayWindow.webContents.isDevToolsOpened()) { - overlayWindow.webContents.openDevTools({ - mode: "detach", - }); - } else { - overlayWindow.webContents.closeDevTools(); - } -}; + toggleDevTools: () => { + if (overlayWindow === null || overlayWindow.isDestroyed()) { + return; + } -export const updatePointerInOverlayWindow = () => { - const state = model.state; + if (!overlayWindow.webContents.isDevToolsOpened()) { + overlayWindow.webContents.openDevTools({ + mode: "detach", + }); + } else { + overlayWindow.webContents.closeDevTools(); + } + }, - if (state.status !== "CREATED") { - throw new Error("Cannot update pointer when not in CREATED state"); - } + updatePointer: () => { + const state = model.state; - if (overlayWindow === null || overlayWindow.isDestroyed()) { - return; - } + if (state.status !== "CREATED") { + throw new Error("Cannot update pointer when not in CREATED state"); + } + + if (overlayWindow === null || overlayWindow.isDestroyed()) { + return; + } - const message: UpdatePointersMessage = [...state.activePointers.values()].map( - ({ user, orientation }) => ({ + const message: UpdatePointersMessage = [ + ...state.activePointers.values(), + ].map(({ user, orientation }) => ({ user, coordinate: { x: -tanDeg(orientation.alpha) / 2, y: -tanDeg(orientation.beta) / 2, }, - }) - ); + })); - overlayWindow.webContents.send("onUpdatePointers", message); -}; + overlayWindow.webContents.send("onUpdatePointers", message); + }, -export const updatePointerTypeInOverlayWindow = () => { - const state = model.state; + updatePointerType: () => { + const state = model.state; - if (state.status !== "CREATED") { - throw new Error("Cannot update pointer type when not in CREATED state"); - } + if (state.status !== "CREATED") { + throw new Error("Cannot update pointer type when not in CREATED state"); + } - if (overlayWindow === null || overlayWindow.isDestroyed()) { - return; - } + if (overlayWindow === null || overlayWindow.isDestroyed()) { + return; + } - const message: PointerType = state.selectedPointerType; + const message: PointerType = state.selectedPointerType; - overlayWindow.webContents.send("onUpdatePointerType", message); -}; + overlayWindow.webContents.send("onUpdatePointerType", message); + }, -export const closeOverlayWindow = () => { - overlayWindow?.close(); + close: () => { + overlayWindow?.close(); + }, }; ipcMain.handle("getPointers", (): GetPointerResult => { From b7f28e84fe954b1f4869ab9b4a1197ee8065f80f Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Wed, 9 Nov 2022 19:36:30 +0900 Subject: [PATCH 070/189] =?UTF-8?q?refactor:=20controller=20=E3=81=AE=20im?= =?UTF-8?q?port=20=E3=82=92=E3=81=8D=E3=82=8C=E3=81=84=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/controller/index.ts | 144 +++++++++--------- desktop/packages/main/src/index.ts | 4 +- desktop/packages/main/src/stomp.ts | 2 +- desktop/packages/main/src/view/tray.ts | 2 +- .../main/src/view/window/customPointerType.ts | 2 +- 5 files changed, 76 insertions(+), 78 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 87cb52b8..a92c643f 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -16,111 +16,109 @@ import { import { store } from "@/store"; import { view } from "@/view"; -export const initialize = () => { - model.initialize(store.get("customPointerTypes")); +export const controller = { + initialize: () => { + model.initialize(store.get("customPointerTypes")); - view.tray.update(); -}; + view.tray.update(); + }, -export const createRoom = async () => { - model.startCreatingRoom(); + createRoom: async () => { + model.startCreatingRoom(); - const { data } = await roomApi.createRoom(); + const { data } = await roomApi.createRoom(); - console.log("created room", data); + console.log("created room", data); - await activate(); + await activate(); - model.createdRoom(data); + model.createdRoom(data); - listenRoomSubscription(data.roomId); + listenRoomSubscription(data.roomId); - view.tray.update(); - await view.window.pointerOverlay.show(); - await showInviteLink(); -}; + view.tray.update(); + await view.window.pointerOverlay.show(); + await view.window.inviteLink.show(); + }, -export const joinedRoom = (user: User) => { - model.joinedRoom(user); -}; + joinedRoom: (user: User) => { + model.joinedRoom(user); + }, -export const leftRoom = (user: User) => { - model.leftRoom(user); -}; + leftRoom: (user: User) => { + model.leftRoom(user); + }, -export const closeRoom = () => { - view.window.pointerOverlay.close(); - view.window.inviteLink.close(); - unsubscribeRoomSubscription(); + closeRoom: () => { + view.window.pointerOverlay.close(); + view.window.inviteLink.close(); + unsubscribeRoomSubscription(); - model.closeRoom(); -}; + model.closeRoom(); + }, -export const pointerUpdated = (user: User, orientation: PointerOrientation) => { - model.updatePointer(user, orientation); + pointerUpdated: (user: User, orientation: PointerOrientation) => { + model.updatePointer(user, orientation); - view.window.pointerOverlay.updatePointer(); -}; + view.window.pointerOverlay.updatePointer(); + }, -export const pointerDeactivated = (user: User) => { - model.deactivatePointer(user); + pointerDeactivated: (user: User) => { + model.deactivatePointer(user); - view.window.pointerOverlay.updatePointer(); -}; + view.window.pointerOverlay.updatePointer(); + }, -export const selectedPointer = (selectedPointerType: PointerType) => { - model.selectedPointer(selectedPointerType); + selectedPointer: (selectedPointerType: PointerType) => { + model.selectedPointer(selectedPointerType); - view.window.pointerOverlay.updatePointerType(); -}; + view.window.pointerOverlay.updatePointerType(); + }, -export const showInviteLink = async () => { - await view.window.inviteLink.show(); -}; + showInviteLink: async () => { + await view.window.inviteLink.show(); + }, -export const toggleOverlayWindowDevTools = () => { - view.window.pointerOverlay.toggleDevTools(); -}; + toggleOverlayWindowDevTools: () => { + view.window.pointerOverlay.toggleDevTools(); + }, -export const addCustomPointerType = () => { - const customPointerType: CustomPointerType = { - id: randomUUID(), - name: "新規カスタムポインター", - }; + addCustomPointerType: () => { + const customPointerType: CustomPointerType = { + id: randomUUID(), + name: "新規カスタムポインター", + }; - model.addedCustomPointerType(customPointerType); + model.addedCustomPointerType(customPointerType); - view.tray.update(); + view.tray.update(); - store.set("customPointerTypes", model.state.customPointerTypes); + store.set("customPointerTypes", model.state.customPointerTypes); - view.window.customPointerType.updateCustomPointerType(); -}; + view.window.customPointerType.updateCustomPointerType(); + }, -export const removeCustomPointerType = ( - customPointerType: CustomPointerType -) => { - model.removedCustomPointerType(customPointerType); + removeCustomPointerType: (customPointerType: CustomPointerType) => { + model.removedCustomPointerType(customPointerType); - view.tray.update(); + view.tray.update(); - store.set("customPointerTypes", model.state.customPointerTypes); + store.set("customPointerTypes", model.state.customPointerTypes); - view.window.customPointerType.updateCustomPointerType(); -}; + view.window.customPointerType.updateCustomPointerType(); + }, -export const updateCustomPointerType = ( - customPointerType: CustomPointerType -) => { - model.updatedCustomPointerType(customPointerType); + updateCustomPointerType: (customPointerType: CustomPointerType) => { + model.updatedCustomPointerType(customPointerType); - view.tray.update(); + view.tray.update(); - store.set("customPointerTypes", model.state.customPointerTypes); + store.set("customPointerTypes", model.state.customPointerTypes); - view.window.customPointerType.updateCustomPointerType(); -}; + view.window.customPointerType.updateCustomPointerType(); + }, -export const showCustomPointerTypes = () => { - view.window.customPointerType.show(); + showCustomPointerTypes: () => { + view.window.customPointerType.show(); + }, }; diff --git a/desktop/packages/main/src/index.ts b/desktop/packages/main/src/index.ts index 79a516b8..a2c5ed09 100644 --- a/desktop/packages/main/src/index.ts +++ b/desktop/packages/main/src/index.ts @@ -1,9 +1,9 @@ import { app } from "electron"; -import { initialize } from "./controller"; +import { controller } from "./controller"; app.once("ready", async () => { - initialize(); + controller.initialize(); }); app.on("window-all-closed", () => { diff --git a/desktop/packages/main/src/stomp.ts b/desktop/packages/main/src/stomp.ts index 54d7bb15..06b604ed 100644 --- a/desktop/packages/main/src/stomp.ts +++ b/desktop/packages/main/src/stomp.ts @@ -1,7 +1,7 @@ import { Client, StompSubscription } from "@stomp/stompjs"; import WebSocket from "ws"; -import * as controller from "./controller"; +import { controller } from "./controller"; import { goNext, goPrevious } from "./pagination"; Object.assign(global, { WebSocket }); diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index 996f9573..dad614e3 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -4,7 +4,7 @@ import { join } from "path"; import { assetsPath } from "../path"; -import * as controller from "@/controller"; +import { controller } from "@/controller"; import { model } from "@/model"; import { State } from "@/types"; diff --git a/desktop/packages/main/src/view/window/customPointerType.ts b/desktop/packages/main/src/view/window/customPointerType.ts index 3278430d..2bf19aa9 100644 --- a/desktop/packages/main/src/view/window/customPointerType.ts +++ b/desktop/packages/main/src/view/window/customPointerType.ts @@ -2,7 +2,7 @@ import { CustomPointerType } from "@smartpointer-desktop/shared"; import { app, BrowserWindow, ipcMain } from "electron"; import { join } from "path"; -import * as controller from "@/controller"; +import { controller } from "@/controller"; import { model } from "@/model"; import { loadFile } from "@/utils/window/loadFile"; From d1ac8abbc361bc4a2d4cff823ebd4637be82e582 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Wed, 9 Nov 2022 20:51:16 +0900 Subject: [PATCH 071/189] =?UTF-8?q?change:=20copy=20UI=20=E3=82=92?= =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=82=88=E3=81=8F=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/link/InviteLink/Clipboard.tsx | 32 +++++++++++++------ .../renderer/src/link/InviteLink/index.tsx | 2 +- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx b/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx index 7b3b2599..d7445f85 100644 --- a/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx +++ b/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx @@ -1,4 +1,12 @@ -import { Button, Flex, Input, Text, useClipboard } from "@chakra-ui/react"; +import { + Button, + Flex, + Input, + InputGroup, + InputRightElement, + Text, + useClipboard, +} from "@chakra-ui/react"; import type { FC } from "react"; import { ClipboardIcon } from "./ClipboardIcon"; @@ -17,16 +25,20 @@ export const Clipboard: FC = ({ title, text }) => { {title} - + + - + + + + ); }; diff --git a/desktop/packages/renderer/src/link/InviteLink/index.tsx b/desktop/packages/renderer/src/link/InviteLink/index.tsx index 9d4abaf2..306c1af6 100644 --- a/desktop/packages/renderer/src/link/InviteLink/index.tsx +++ b/desktop/packages/renderer/src/link/InviteLink/index.tsx @@ -49,7 +49,7 @@ export const InviteLink: FC = () => { /> - + From 13b15998de803ce425396be8be3565f82901f24e Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Wed, 9 Nov 2022 21:03:23 +0900 Subject: [PATCH 072/189] =?UTF-8?q?feat:=20OGP=20=E3=82=92=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/pointer/index.html | 19 +++++++++++++++++++ app/src/main/pointer/public/og.png | Bin 0 -> 150610 bytes 2 files changed, 19 insertions(+) create mode 100644 app/src/main/pointer/public/og.png diff --git a/app/src/main/pointer/index.html b/app/src/main/pointer/index.html index 8efe10d6..80418869 100644 --- a/app/src/main/pointer/index.html +++ b/app/src/main/pointer/index.html @@ -5,7 +5,26 @@ スマートポインター + + + + + + + + + + +   + +
diff --git a/app/src/main/pointer/public/og.png b/app/src/main/pointer/public/og.png new file mode 100644 index 0000000000000000000000000000000000000000..628df2785eae02f14f878c94153dad86bc63c8c5 GIT binary patch literal 150610 zcmXtfWl$V#(>0de;2zxF-Ccrf@DSYH-C5ig4GBa z*L0nh)2DkPRg|QW5%3Y9prDXtWhB2qLBY8HyFUWnpG>KbKfeFKJId&|KtUm5{=1=} zeq`dlKZJJqA}tP8HAZ;&{s+!NOi>I9suqm+V)OwDMt)ybQcT?w`lQoq!fsxJq-Dsn4I)xmt;DksDKu6*{?IJzFS8OUqa^UyZ5WXv z{IcolC+eXn5V&w9HyA7{Or*SMSz?SmI4{ybU_8>N#0n3sb(cGQf16XkvwNXKdnv(cimY7DQTH=QpnpcL(jp_44<#DY_h&Kev+N%p;_- zU|yb0ZDvf^OE;{ObX`&{eTdyXHd{0>UDFesAvYKH9hx#``V0K3fb%)-+SyV{Gdz^# ztn{)+em@)&QIDLao!EhVG`HD zW77|5=~2rD{1S8Ia>#LbBg0pjX$e+4GNXMSl9F0K)m_>;PdHV4`&j@=BKE%+^F?}9 zbhCf`a)l!&XnR;|9T?ekTH>d*8uU630_wLOnT<%NatmNv{*<4Wn4B*fZ=YZUzFhZy zl2|9WW!qp{?6d8ff3kpqD1b=@1DvBjvw^3>Du8}MPAYSlk0F9y5f$B^PdgCW0y3Gu zP2l=wOfR2i`xrw`^lY939ySc{?l?v&wUnY(>sL(8WXI-M?y?@ijvU$;o7q6X{I3;%ynZl!ljZbrlUE$((d+j z)iOPOQ3Ea}*f&4%VM7dIZyu))O!&G46k-_J%G;#z<;6%oBe`=kw=8cNB}*#3nsdLzJD~)rFy-)D{9#OiZWePQ;RAJwz% z3^Ry}b?l?qG21yb->yu+-}t}1`EIb*x4CM2bwdJ&<-;d;gLdoZ>;gZxNCz(Dvk>>w zDZ)~aJ{`7%eBOqB{E268CqVe!^^Q-DK2xjQJBE8^6~9Hzac0Dh<|-!?%qHSmz;Pty z)nJ^Eh)nnpS7Cbtl4zRe?v@`|4eBmZ3+`%u+NjG9+^2`MvfQU^mW3x*RZ%X;C~<#z z-mvTZ8_@F7jPD}T2T+%{R+{r#n0)S=*xdMkFa`2GiQT8{55q zzqAFpxIAk@pgrd^Ji1&xYw}pXEgkRlsd~t&bf&6x|6cy>?I_?ugk-^>>jjD_lHk$? z1&ZHy_;Y5X8oYLaAIs0%i!Uk&#&w+-q#$=~dSt?$Wa1N}VOT%piPCin*l^pSOi*m> z^zbC@JmCPss@m;b6ib&B+9q>yW+tRH9zXWHkr&W^Ooxg?Wh_LMIgPrSkExhy#shn@( zFV6B{al4)z559DE1RBN|W?9%5h$fql<5o~H7ZYX#5fk9rpqKnON=-v_CF_wU$~0OQ z-2nN|LdOET{3TE5@7fA~aUP)B#KPQv)r*V`ru$eGuq@h9F}KqTE_1f~OmldmZ7k*o z(VL=_N{uM1MnA%K6Ej0A^f&B>D?-WTV!L>O?eYifutHv0XMaewn+aS@!9mexrHooMnoFtQviG=uY)Gm+3km!pePY8E!c#a~vlmLbZH4qd20C>OO~MiB^u|NlOI$g*!P(od>Gg18vbp_Dne)t?xkf%7Wcpl z3FnURZ)?*`8Y%pgU(ro%*tQ~x=8DOZB0@g=!@LYca&rulB7!=K!guRvdOA#8XN5*+ z3K!;(^Djvya$9(GPT*Mhi$drx^o!*p)06N*>p9*@BABR`LF!Ffn z!-j2%=xyL9A%a`^rI~Vl;S0a;#u&N~2 zInuG?2$*X>!ORXmiE?XpZDFf1B*}{wRIqy_1h*A#`>72ZCK|$Kq38W-A!Nt+bBuV- z2j3gSWI0K>`LFM;zMZ-RtRXTe)PHl* zVXhZ`6=-)rm)|4bYCsUoCeqE~WB|GM1ul=N0AN*N1aUZECZ04x8~xiFQsmluC-@IR z+*hD_F4^!As6-GUS5vC)R13+m98^BJ!7R3_$n$4n;0M^%;eAo9td=DYhjxtil4%QT ziyZu=!Q03uXm8KVl55z;>blkOtt5-8bokr$m@AJ=DYyUTa$JomeL zUPeE5XUuf6+C^XXKqSI5aXXVVnJJv2OLi|@Ft%_L)UH0g&5=UF(3bVXF^)0d)&u-;D~OU@BD>7b@|#+gfnQ9oB(1rUcJ1!~8T zMN?oa~46L%4cGu2D(g0-kld zFLdAFN1e-lagI#ZRg4L_X=e%WE)t-|`LhKP^fa{@;_xm`8d%gm;;C?Z%Hs5=d|i$e z$ow!#izXV62NcZ+tt3Z->t>H0s7ZjO4~iLKh>DO-9l%dux1_T;M*IUv{X!mQKO|4( zpFdWsoJ@sWR%+BR5+r~+Q>s*>`ur)W6fq36@v(Ql4Iiau6^d3g7>uNnH`?(-42c zfS_%T58=cuHn~F|OD-*D*xbbWb$-diz=^d^6eGRZ)70&JwTboAGKE;@Cf#Ugax68^ z<@^+@X%b6_4HyGy*iF+<@=nkr6V=$Te)S*BCG_TAyxsuZ!7aU$s@=XLH(8j^y6^&< zO%A(?C2fF-VISA64$AbvwtA*4WVJwHc*Ib!E7GH?ZH#NoOH7^yW;-LI|2al0eIG4d z`a{n9p^@V{_`MM@=unK9+HI#_M1)hM^F;@Pzty*8rL8zTbsdl`n9;~QCJ~Hcn*HC~i;QNzrwpNL}JZP@|!s>g@I1tCYEZmtzS3)V6 zvBJ`QTJvCKZ6%phIjig)+0k9%o^_aQZrgfw2O*%J%m)ecj<0M_Z4Pm_p2t_-)Z%Hn{(p9O%A_JT+%&te{fj;dOQj(4LIX|qL;{`RB?N!M*&+9>K@4QqkB4h_NOA< zjt%0rzVYZY-y=@q3qVjCZ1lDSEXL$SdLfh{gG`nDu}{vcYXckz&dNf@fNj-RB&b8c z{6!OY|03KEM9sZJkoqPm(!Od<)3-kOED$;8>9|&u;nqm(Bw!_g4=j?*h(rFg?LT$j zOR5Qb>KM3uFlZTfV+l)U4|A0ZhBdc#@c%8S^wnD=8dRyV4ElWX7L+lF*csKhgriz5 zLgE;mNb_Dvn-AaFy4eefIl05)Y7>N}**nv=ZpQk3)(D0Cn)s7-HFFP_^rg-g z+hFtDUAyX*a|RX)yYyX;M2d2hmx7nKyD`&c_Ec53~Sc{+*LNJ#(X zd;SX8y#KomapI%&Y`)TKD0c0<*0`yq0uu^CpjRMd!s(S!M!&rLP}C4}?~=KxFk5lr z0GM=ZM`9HXWcUq*m!#_Q@S=S^45i(IF4$C?9OSr+9aR|10DoZ1C_f0=>{YvMg}7f1 zjhh&UAQ|sQDz}6~E~RxJ^VYJr>x#68rMKWyUAHZe;U2mw6~kp!&>0B5g2;`3VZ-KS zWg;r@weA&zn>~6@q>Rhn(~5p;3ncy0bR#?S81IloVGHZ(oip;>{g2yNZHe4BYS_cP zkPL6*Fc0NCJvVRk#iiTlCvqmKAz{AA*{yyzh+nADr z(JV4@t95-%E>X!6HjPl6_LR=NqKDfet4ZvT&s|#f`S`qmA-{E3C3zGzBdWM8R!#6R zBe04^yvT|H4R^|fv@VEefkSAYc5<9E6z;%_73kNr61Zq_mO_W-ShDR({2VAp>q0|< zZvRu71l~uKTzrO3WFC`Zl!D~k3ul;z<3@1D`_oCYU(kz3MMUnYp-O0*m!Wa|GVYJ} zkZ=Bk37PrhH+B&)a@xH-$@Hb`QE2^<$>ZCG0Uz$mCKj}oGTYBXz)}y-+?B&-h^j(U+d65-Vf56Juq_pY@F9x@dd>BuLSKALr_O( z9<$bO)})DxbbqpDUDpYA?Of3u+6iohm%*xRaABvxA4^SITG}!34#dET^QZbpJgFMn z;7dW(@wao&u-?+jAW@MMz1rggPmMJ-OzVpH3)7$!)ISpG4_zq+@&nancX;eQ| zrkQS1iX+9G);N6BM``nFIVT6!jm0?8QP_lq^w8nuF-Y9-rD1jRK_$(uSfQVysZIM50U)>B0=) zGYqa_@n^=k5LQBJcORUbotvaftO!!{%=-0q0F@_p>Y(r7$tElU&p3Ry^?HXtF(Pgk zXTVzZJbLe0uTZLcOK@(touA!S4)t5)`(U=eyq`2Ciw zFK4HjDCTj(o3w~k(hYx~H1~xl%7A}!0jEaOVks>MFW#|9(afF1tbrx37CDBi>2|D^ zm+(rJT1D#TUxtf#r5=vNwnHPkkyi(#jwb;t$vWGX_0OiFNiG*UfR;Pg`zadrRA>e- z_Vr~typQ8iJ@xf9M`8X5ixth}1{(8wkM4r4mD9gx6E^;wwQ#N_tskOxsPnKFf<6Dj z5_>P3zQ*i;uiwyS;gEJvpNoQW!t*)Y16dgVc_rsNtzDmlY+5kqjL){aG#lS*tzBms zyu(Rk`=}xk3SV9BLqC_VHh2=JK&KJy zt#-;Y(7OAMR}0%o;@BgI<)iEyNCZbKlq;P_{}ncmmF8w*$m@+Wb{uj z#g7Fo(L`2-MH)ATge6?Tze!*{-6m4sG@HFhx^r*>Bk(|5wA4qfh_5@%Hn@y*TA zNs+b&=k+Q5FTMYz7$-B|u8@>ibWms{MAKv|$NQ4z&BdS@_bruha}06c<(z1mkM0;0 z7Lc*#TeIHQk6%TM!jau5<@!;YtgdHrt2nq9eA+~i#f@c!zXOVD3ePeJcEP!b zWr6)H32GcHL~_xphk23sbi){;_iZvrgn~%*i{gRE%~w17n-9<7I+kQI_#4w{%cmgd z+5-FZ*@BQ+lns-_?C~&v(O0q_ z!t(>)JvKR<#Aj!UNWg!8^SF@r2hq3%z2s?@KRhEGbi34${^w0nzxYs;*J&V<9j-^s z!0K0h=u%WT*ug&?b+~%com9g?fQ-cmz>$6N83RT~)J7{+NEFN;fO0 z0IHtvxyjuoesZs2*yVb8+aE%;4J=+OOP*``~eAdmb6gOc(-6((>o?gdu> z2nbMmlF&C2m49tA!Uq+TXcUDQxBVC^YI5f*n5tiog$uV6qjXl5vh7hB_~iMgQMxZT z?uQL5o|tNYa@|JYV=gUtqYp5W(p;BZ2t z(%)}>59ORsO^fq>VCAi7jDXh9vkpiIZYjmc=jC;6vnb;F19#==XC>v>_1^ecMeofh zT*HrtYP)~rR5=!s)v;S?a8u+^kkP=p8nU}NxaNF0hIrqx&C2Ipf(R@xm|P_N{j)9W8&V&%N082yaw!s zOjqfKJYd+z5O4casxl3W-*|?BhVb@WXzIC(VaNFWWiE-8w;aR{9OydFwY#r^3`8w% z(B@~6V*W0kQfNyF$fd#lyOIVezw9h-?ALMgCWq%OgrWzj#m7)UpZ+jHLXmrGQ77NzU z!leP(zjOruSw-}#Tae9BFUuxA_}7$%XN!gZi%1qUNIzJF!FBqyy}k5q!EgJS*z3T( zXb^?IJ4D66Ab{LkF}r?y00rFzrj$d$Wk2_GMboGlQ8#x~>~~72bFz~C5xm4-u~)VJ zt1hg+=t^+yj-v+zv-J44HfGI-n3v?n?r0YBR1%+SiKWqahqP1wq>RjbgclqOFpvY*@Z~Tq(7I3ihTg#rxpjE;w~knO5{auJliM2++S@?Yzz)evShkP}B1$ z{#Rx1yX>2bJ&3XV&_SzT4f!{MB;a5~pG64u%gb*GCy+~m_9IY~=22@uup$~C*$P)< zI1&Gqg(D1KlA4qJTOZ;-g(Oh@X{8N8v1#WJR#AT zGz)e0V8dR>LKlqw#-$J%7DMlX1H)mTPP_hEBEIJ-&3aO4B3xlXI!UJPH8lSeEmn0I zd96%F$YN3`re&<%*3!D9?phq_4(O{q!UtudR4C|OdMAP~06vjpFR;WbEVL&vT&wzFp)zu=+c(+YwC*}s;h(LU(L0*F{l8jn84SGp3Cn+8 z0tHF6^msN|f64B?XL3zS&LFS-$F01sUHTmi0%YJ2f*-a}jI}4%M_G`xH-BT)q6oIU zR&zjo^aqK`2&-WNRR9?EfW(jDztu8sEmWZa73il1|wG8V)T+562OZU7v*#UzagTbPZ&e(Vx-wZJ}fL| z^~7NJ8c;rs<|$T)6bbUm8Lk8n@cjzX{q~96Z;>xUQ3izNwZkSb0QKqBylYf$>Gui4 zC{`YYw%f-^<8Q8bcU4RL0v#+=zlz{daC7&`n~^y@NYmIKR-_LbnFYPEAWUJ@o$@{?vO z^uljEny#6V8{uuReWj>!##t&-b0gpl*La(sUCW@c8jkY*37%oWcbos60F%pr0|=9Y z-)OThLDuFk*RTzP4RDBS0CR|0Azk0Z& z@;=PZqrEKP;pW!jk-|t<1QFahx+vz*+?!CFPBVi7j5_*2`^FY*OnBM~&gTmX`nc?) z9@K*60(9LHMnPV}Hh6z3WNR-dkV_*AAnYgHPMPwY=oA;rWthq*`oE|zPFO~PX~?Yh z@*2j(J94^|v8z-fNctUMjLCHCm82fvks!Lob3|IqF|=ilYstokTlQgAN2JSMr~mku zNJ91lOP}}&( z7jtFIhSP%yhkp|iH|33Uw&W3WiW(JULP4>i;oPL!lB{)+QMB315xdLby4s&mXQ4R~h7zf?fDOj%5#>Bp z-j$ZHXPi<5mROE-Xk;vHQ_B$34T*w4qbQbi{umlIWq`P;=#<_y<<4|+_=_lqZf;Rb(bexJ0Z)hQTLdmMjOkOb^whXJqu_~ZlI{6I9(l65D(Zb zdSq{xcXmEiOw&$TM?Q$uZFGU(Fm>$C^_qcx&+&nNy2sjCXoVwH)kwTP{$j^`TMX_-C&L zYN=i|g1F1l3NyE8fw0uo{JHKvcUnU%i;h^FDoJL>xqWJj0ROBVR-fh&z)?t zn_|Bi)R6!9Lj8!x-~E5_SFioAh8DD0AVPqxV}FscEsO`w2-dHMGEn7wOrEKPb!()To{{+gz<|>;psg-1+*q`g!Wz(Em#O6&NrbiZF+2ZJR z*Ce@2eyCY24*YZ%Oimq_aozieD4G&^Z;AeQF6(X&Hb2@&6jmJfY$T{-fk;n zd(4n`xs-lLrJw7?ogi}TG&ch^V_=?KdS|!JRS#7KE zPMfFuA&S8eGb3xSJ?5;SU#_4Lg0Elhzw=H()i2-HW4RFxmo+KqO_@jfn@^<963lRs z$E)gV0>cs84ra!}ok)_CfvU$AYk{b}T_JFbMkhd!>A3U>_Q50maS(XOO~FF}4NvWP zbX~GbqW&cMd78<&z)6jb@s(W2X!dgWOS?)<>&f0+|Jk@g@m@*wi?sEfkj zu`b0^!@AmYr8vUCA3{7}VzSLd#cYx`4G%ZwSk;DyV#KvLW9|0II&P z4C3O$9omNO7YKsd5@mQr6~#APfnjKvZC;D%C4L$3k6qGo@=5iQ2!~feXDzhk>6Mi; z;8IbYwb%{F-QS2)wwBKrEbEjBSe9RHKIk`$OSwplItDj+Mu={%Gq7Mi)srUIsJO}$ zjQEWOA$2X2>EEksv@i9jxNi1-36v$in@x>`Om+Xm<9%_$_CaK)5ViZ3D_}ck0-0Wc zr$q2&!9&ndVEs-T0bl%;5i4^JHurnOI@}Spw85wqatUwfZMpfi|5xRa1SsP(#2;>P z=0uu3bY!t$jCpIuPlxNCrqGgtGqS}D@kur+P^+qN!AMPiw;iFN@Dg%nx`}m37&gRc zmvbjA``H(2S!C;s;;+uo3qv@?AX0i;L-x%Dul_ktsU>Dn?fF57DYd8F!yHlHd1%$L%=Kq(70s35ofvcwnA9 zA|6lu&oJ9HFGrI>9$FGquOWInWlLKE*y3ar_v2}*e_ z8sNrpfR!93mBYU?)X6BP5%DpQHbiU@)`EJro4`4Nohz>w;>lHaMtOVAx_?E8(hjA%vG~{GA zGbq*I?!*^vms`gR_Y@JH`2|KXi85FO7Pv{W<%yQu_!1o^`G1D*<3ey8EWGx~_FHA< zTfg1+pK%v86NPj)ys;LWy#(4^BM)toeI5CJbZmwijBB=$N*Ig(o06bhXi=cdNxb8U zp0^zM69XAaZEH=Ra3OPeG7rg$#da`_EO#iI=@Y>*Mh^}$mj6^&`?gNb9GE`RNIml0 z*884x7*`AzOS?)kq=K6iYT*{Fq*%bi?YvdNr$ugrDRfwupZSJ*aHK|Ff!UlDIf6G) zx2{&g#AixO^6_!HiI6kNZ`C5wc__7M!bmki&G2`i4mn2X3t=~i?7{RR^w#BEkY#-| zhMBw_6?SwMcDgKnkvmO}O7Lhx8b6b-9M0x{!b9`+`!oU(5^fS6%IFQ$+jrK(Y~QV= z2C9(nO&2GTe?i|^9=WMDWA)&~M8=jJsxxi`9vO$(4c}do50Q`T zy-dIZ%#g_Cg^CN%2T!|jf_uwaB5vFpFV!i3D_Hv$i}hv!Tuom4ya+6rv@xD$hzsCM zCeUy@sGih?X{D4YfMuVK#{r)GQOLv!lex%f7ZI^=AWZ_G!;C~kQq~&WC&#aYM!5E| zuQ0CzX!LRExv;CE9{&TrC@M0*bjN%UlD8_c{*c}M{84Z4muuFrGw_5gGN9qkoD9ZMy+$NX-x*bYbpK4-D!Cojg_0k$_~$6ZbxX~Eb|ceBF(?pI1byO%oiOyR}(=F zDUSKN$A*rZ;3tgJ-Kk}oLd=f zxmmT{H0?3O5gmfnlyas!C@
-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

Q!LxC75^Pq#s&pyyG$Y)4bEm$Qsm+_^`U ze_m$(x67l!4+}RE(jienibU=V(qVY8`rUKr10T+}J zz#AXPaYnf8bj6TM93{g*%zuh z^49hiPJG*+_gqo5-#_zze_>%(c1n?h%uhUnHc!%kJ5oaWmO)c=3BBjRZ}lU}TO*yV z^bl{L?-=t`?M=_*x9~^k$M~=Pfi4H%=}BR+zgS2AAlzvLC=0m1E;EIewAPCxC0j)> z!tKmUSip5^Mp^^eOvSmy|B1>V{Q0$PIJtO$@41)H+ka~ccxIqy%kZjnX$g>->*u@SzgLB-v>A1`ilq8=*+WeZ^=TA6 zH3fqe_|=M~uTh`IQ+V7JQ7wVGT0_bV)@QDR<(%0D#>dShHZ$f*0HfHLGl1K3NmC^DC~ulz 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 Date: Wed, 9 Nov 2022 22:18:50 +0900 Subject: [PATCH 073/189] =?UTF-8?q?change:=20tray=20=E3=83=A1=E3=83=8B?= =?UTF-8?q?=E3=83=A5=E3=83=BC=E3=81=AE=E9=A0=86=E7=95=AA=E3=82=92=E6=95=B4?= =?UTF-8?q?=E7=90=86=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/view/tray.ts | 72 ++++++++++++++++++++------ 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index dad614e3..62000da9 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -12,7 +12,7 @@ type MenuTemplate = ( state: S ) => MenuItemConstructorOptions[]; -const defaultMenuTemplate: MenuTemplate< +const createRoomTemplate: MenuTemplate< State & { status: "CREATING" | "READY" } > = (state) => [ { @@ -23,7 +23,7 @@ const defaultMenuTemplate: MenuTemplate< }, ]; -const createdRoomMenuTemplate: MenuTemplate = ( +const pointerListTemplate: MenuTemplate = ( state ) => [ { @@ -41,6 +41,11 @@ const createdRoomMenuTemplate: MenuTemplate = ( click: () => controller.selectedPointer(pointer), })), }, +]; + +const memberListTemplate: MenuTemplate = ( + state +) => [ { label: "参加者一覧", accelerator: "CmdOrCtrl+L", @@ -50,12 +55,17 @@ const createdRoomMenuTemplate: MenuTemplate = ( label: user.name, })) ?? [], }, +]; + +const showInviteLinkWindowTemplate: MenuItemConstructorOptions[] = [ { label: "招待リンクを表示", accelerator: "CmdOrCtrl+S", click: controller.showInviteLink, }, - { type: "separator" }, +]; + +const closeRoomTemplate: MenuItemConstructorOptions[] = [ { label: "ルームを終了", accelerator: "CmdOrCtrl+W", @@ -63,32 +73,60 @@ const createdRoomMenuTemplate: MenuTemplate = ( }, ]; -const menuTemplate: MenuTemplate = (state) => [ - ...(state.status === "CREATED" - ? createdRoomMenuTemplate(state) - : defaultMenuTemplate(state)), - { type: "separator" }, +const customPointerSetting: MenuItemConstructorOptions[] = [ { label: "自作ポインターの設定", click: controller.showCustomPointerTypes, }, - { type: "separator" }, +]; + +const quitApp: MenuItemConstructorOptions[] = [ { role: "quit", label: "アプリを終了", accelerator: "Cmd+Q", }, - ...(import.meta.env.DEV && state.status === "CREATED" - ? ([ - { type: "separator" }, - { - label: "オーバーレイの開発者ツールを表示", - click: controller.toggleOverlayWindowDevTools, - }, - ] as const) +]; + +const showDevTools: MenuItemConstructorOptions[] = [ + { + label: "オーバーレイの開発者ツールを表示", + click: controller.toggleOverlayWindowDevTools, + }, +]; + +const defaultMenuTemplate: MenuTemplate< + State & { status: "CREATING" | "READY" } +> = (state) => [ + ...createRoomTemplate(state), + { type: "separator" }, + ...customPointerSetting, + { type: "separator" }, + ...quitApp, +]; + +const createdRoomMenuTemplate: MenuTemplate = ( + state +) => [ + ...pointerListTemplate(state), + ...customPointerSetting, + ...memberListTemplate(state), + ...showInviteLinkWindowTemplate, + { type: "separator" }, + ...closeRoomTemplate, + { type: "separator" }, + ...quitApp, + ...(import.meta.env.DEV + ? [{ type: "separator" } as const, ...showDevTools] : []), ]; +const menuTemplate: MenuTemplate = (state) => [ + ...(state.status === "CREATED" + ? createdRoomMenuTemplate(state) + : defaultMenuTemplate(state)), +]; + let trayInstance: Tray | null = null; const getIconFileName = () => { From c59b2ce1bfd9e998368a0d84ff21cc7e9fd746c4 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 07:51:37 +0900 Subject: [PATCH 074/189] re-generate graphql types --- app/src/main/pointer/src/gql/graphql.ts | 178 +++++++++++++++++++++--- 1 file changed, 159 insertions(+), 19 deletions(-) diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index d920e784..65a38474 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -13,18 +13,41 @@ export type Scalars = { Float: number; }; -export type AccessTokenResponse = { - __typename?: 'AccessTokenResponse'; - accessToken?: Maybe; - tokenType?: Maybe; - ttl?: Maybe; +/** アクセストークン */ +export type AccessToken = { + __typename?: 'AccessToken'; + /** アクセストークン */ + accessToken: Scalars['String']; + /** トークンタイプ */ + tokenType: Scalars['String']; + /** TTL [s] */ + ttl: Scalars['Int']; }; export type Mutation = { __typename?: 'Mutation'; - createRoom?: Maybe; + /** ルーム作成API */ + createRoom: Room; + /** ルーム削除API */ deleteRoom: Scalars['ID']; - joinRoom?: Maybe; + /** ポインター切断API */ + disconnectPointer: PointerControl; + /** スライドを進めるAPI */ + goNextSlide: SlideControl; + /** スライドを戻すAPI */ + goPreviousSlide: SlideControl; + /** ルーム入室API */ + joinRoom: AccessToken; + /** ポインター操作API */ + movePointer: PointerControl; + /** タイマーリセットAPI */ + resetTimer: Timer; + /** タイマー再開API */ + resumeTimer: Timer; + /** タイマー開始API */ + startTimer: Timer; + /** タイマー停止API */ + stopTimer: Timer; }; @@ -34,35 +57,152 @@ export type MutationDeleteRoomArgs = { export type MutationJoinRoomArgs = { - passcode?: InputMaybe; + passcode: Scalars['String']; roomId: Scalars['ID']; - userName?: InputMaybe; + userName: Scalars['String']; +}; + + +export type MutationStartTimerArgs = { + inputTime: Scalars['Int']; +}; + + +export type MutationStopTimerArgs = { + remainingTimeAtPaused: Scalars['Int']; +}; + +/** ポインター操作 */ +export type PointerControl = { + __typename?: 'PointerControl'; + /** 操作方向 */ + orientation: PointerControlOrientation; + /** 操作者 */ + user: User; +}; + +/** ポインター操作方向 */ +export type PointerControlOrientation = { + __typename?: 'PointerControlOrientation'; + /** α値 */ + alpha: Scalars['Float']; + /** β値 */ + beta: Scalars['Float']; + /** γ値 */ + gamma: Scalars['Float']; }; export type Query = { __typename?: 'Query'; - health?: Maybe; + /** タイマー取得API */ + getTimer: Timer; + /** ユーザリスト取得API */ + getUsers: Users; + /** ヘルスチェックAPI */ + health: Scalars['Boolean']; }; -export type RoomResponse = { - __typename?: 'RoomResponse'; - passcode?: Maybe; + +export type QueryGetTimerArgs = { + roomId: Scalars['ID']; +}; + + +export type QueryGetUsersArgs = { roomId: Scalars['ID']; }; +/** ルーム */ +export type Room = { + __typename?: 'Room'; + /** ルームID */ + id: Scalars['ID']; + /** パスコード */ + passcode: Scalars['String']; +}; + +/** スライド操作 */ +export enum SlideControl { + /** 進める */ + Next = 'NEXT', + /** 戻す */ + Previous = 'PREVIOUS' +} + export type Subscription = { __typename?: 'Subscription'; - getUsers?: Maybe>>; + /** ポインター操作購読API */ + subscribeToPointer: PointerControl; + /** ポインター切断イベント購読API */ + subscribeToPointerDisconnectEvent: User; + /** スライド操作購読API */ + subscribeToSlideControl: SlideControl; + /** タイマー購読API */ + subscribeToTimer: Timer; + /** ユーザリスト購読API */ + subscribeToUsers: Array; +}; + + +export type SubscriptionSubscribeToPointerArgs = { + roomId: Scalars['ID']; +}; + + +export type SubscriptionSubscribeToPointerDisconnectEventArgs = { + roomId: Scalars['ID']; +}; + + +export type SubscriptionSubscribeToSlideControlArgs = { + roomId: Scalars['ID']; +}; + + +export type SubscriptionSubscribeToTimerArgs = { + roomId: Scalars['ID']; }; -export type SubscriptionGetUsersArgs = { +export type SubscriptionSubscribeToUsersArgs = { roomId: Scalars['ID']; }; -export type UserResponse = { - __typename?: 'UserResponse'; +/** タイマー */ +export type Timer = { + __typename?: 'Timer'; + /** 終了時刻 */ + finishAt: Scalars['String']; + /** 入力時間 [s] */ + inputTime: Scalars['Int']; + /** 一時停止時点での残り時間 [s] */ + remainingTimeAtPaused?: Maybe; + /** ステータス */ + status: TimerStatus; +}; + +/** タイマーステータス */ +export enum TimerStatus { + /** 一時停止中 */ + Paused = 'PAUSED', + /** 準備中 */ + Ready = 'READY', + /** 実行中 */ + Running = 'RUNNING' +} + +/** ユーザ */ +export type User = { + __typename?: 'User'; + /** ユーザID */ id: Scalars['ID']; - name?: Maybe; - roomId?: Maybe; + /** ルーム名 */ + name: Scalars['String']; +}; + +/** ユーザリスト */ +export type Users = { + __typename?: 'Users'; + /** ユーザリスト */ + users: Array; }; From cbd6342c1080d0de0c2c81a4c826e6112866bf6d Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 07:52:11 +0900 Subject: [PATCH 075/189] introduce graphql-ws to pointer --- app/src/main/pointer/package-lock.json | 3 +-- app/src/main/pointer/package.json | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/pointer/package-lock.json b/app/src/main/pointer/package-lock.json index 7d7c3cbf..edb03f9c 100644 --- a/app/src/main/pointer/package-lock.json +++ b/app/src/main/pointer/package-lock.json @@ -17,6 +17,7 @@ "framer-motion": "7.5.3", "graphql": "16.6.0", "graphql-request": "5.0.0", + "graphql-ws": "^5.11.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.38.0" @@ -7930,7 +7931,6 @@ "version": "5.11.2", "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.11.2.tgz", "integrity": "sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w==", - "dev": true, "engines": { "node": ">=10" }, @@ -18331,7 +18331,6 @@ "version": "5.11.2", "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.11.2.tgz", "integrity": "sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w==", - "dev": true, "requires": {} }, "has": { diff --git a/app/src/main/pointer/package.json b/app/src/main/pointer/package.json index 5e56fa33..4ecd7fc7 100644 --- a/app/src/main/pointer/package.json +++ b/app/src/main/pointer/package.json @@ -25,6 +25,7 @@ "framer-motion": "7.5.3", "graphql": "16.6.0", "graphql-request": "5.0.0", + "graphql-ws": "^5.11.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.38.0" From 9181795638845c165750a801f64e6677a6ae5fb9 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 07:54:26 +0900 Subject: [PATCH 076/189] set dev proxy to graphql endpoint to pointer --- app/src/main/pointer/vite.config.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/pointer/vite.config.ts b/app/src/main/pointer/vite.config.ts index 7b0a9f30..6fe24ac9 100644 --- a/app/src/main/pointer/vite.config.ts +++ b/app/src/main/pointer/vite.config.ts @@ -16,10 +16,17 @@ export default defineConfig({ "/api": { target: "http://localhost:8080", }, + "/graphql": { + target: "http://localhost:8080", + }, "/ws": { target: "ws://localhost:8080", ws: true, }, + "/graphql-ws": { + target: "ws://localhost:8080", + ws: true, + }, }, }, test: {}, From 57fd977849cda7d80254489e3823e23bbeda45ab Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 08:01:05 +0900 Subject: [PATCH 077/189] fix invite link url in dev --- desktop/packages/main/src/view/window/inviteLink.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/packages/main/src/view/window/inviteLink.ts b/desktop/packages/main/src/view/window/inviteLink.ts index e85daa63..608bdd22 100644 --- a/desktop/packages/main/src/view/window/inviteLink.ts +++ b/desktop/packages/main/src/view/window/inviteLink.ts @@ -28,7 +28,7 @@ export const inviteLink = { passcode: state.room.passcode, origin: process.env["USE_DEV_BACKEND"] === "true" - ? "https://REPLACE_HERE_TO_ADDR:8080" + ? "https://DEV_HOST" : "https://smartpointer.abelab.dev", }); } From 9adae7b327269d0baca6d760f3556b835ea34a81 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 08:41:57 +0900 Subject: [PATCH 078/189] add security restrictions --- desktop/packages/main/src/index.ts | 2 + .../main/src/security-restrictions.ts | 69 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 desktop/packages/main/src/security-restrictions.ts diff --git a/desktop/packages/main/src/index.ts b/desktop/packages/main/src/index.ts index a2c5ed09..6c753f5c 100644 --- a/desktop/packages/main/src/index.ts +++ b/desktop/packages/main/src/index.ts @@ -2,6 +2,8 @@ import { app } from "electron"; import { controller } from "./controller"; +import "./security-restrictions"; + app.once("ready", async () => { controller.initialize(); }); diff --git a/desktop/packages/main/src/security-restrictions.ts b/desktop/packages/main/src/security-restrictions.ts new file mode 100644 index 00000000..e4d401f0 --- /dev/null +++ b/desktop/packages/main/src/security-restrictions.ts @@ -0,0 +1,69 @@ +import { app, shell } from "electron"; +import { URL } from "url"; + +const localFileOrigin = + import.meta.env.DEV && import.meta.env.VITE_DEV_SERVER_URL + ? new URL(import.meta.env.VITE_DEV_SERVER_URL).origin + : "file://"; + +const allowedExternalOrigins = new Set(["https://smartpointer.abelab.dev"]); + +app.on("web-contents-created", (_, contents) => { + contents.on("will-navigate", (event, url) => { + const { origin } = new URL(url); + if (origin !== localFileOrigin) { + event.preventDefault(); + console.warn(`Blocked navigating to disallowed origin: ${origin}`); + } + }); + + contents.session.setPermissionRequestHandler( + (webContents, permission, callback) => { + callback(false); + if (import.meta.env.DEV) { + const { origin } = new URL(webContents.getURL()); + console.warn( + `${origin} requested permission for '${permission}', but was rejected.` + ); + } + } + ); + + contents.setWindowOpenHandler(({ url }) => { + const { origin } = new URL(url); + + if (allowedExternalOrigins.has(origin)) { + shell.openExternal(url).catch(console.error); + } else if (import.meta.env.DEV) { + console.warn(`Blocked the opening of a disallowed origin: ${origin}`); + } + + return { action: "deny" }; + }); + + contents.on("will-attach-webview", (event, webPreferences, params) => { + if (!params["src"]) { + event.preventDefault(); + return; + } + + const { origin } = new URL(params["src"]); + if (localFileOrigin !== origin) { + if (import.meta.env.DEV) { + console.warn( + `A webview tried to attach ${params["src"]}, but was blocked.` + ); + } + + event.preventDefault(); + return; + } + + delete webPreferences.preload; + // @ts-expect-error `preloadURL` exists. - @see https://www.electronjs.org/docs/latest/api/web-contents#event-will-attach-webview + delete webPreferences.preloadURL; + + webPreferences.nodeIntegration = false; + webPreferences.contextIsolation = true; + }); +}); From 3f24da873f03c26a7dc38f815330ce25a8b0400f Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 09:54:35 +0900 Subject: [PATCH 079/189] restrict custom pointer type image --- .../src/customPointerTypes/CustomPointerTypeTabItem.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx b/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx index 31055475..df6e4175 100644 --- a/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx +++ b/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx @@ -42,7 +42,11 @@ export const CustomPointerTypeTabItem: FC<{ }); const { getRootProps, getInputProps } = useDropzone({ - accept: { "image/*": [] }, + accept: { + "image/jpeg": [], + "image/png": [], + "image/gif": [], + }, onDrop: (acceptedFiles) => { const file = acceptedFiles[0]; if (file) { From 480e26beaafb7419ff8ac15554699068396ecb37 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 10:09:15 +0900 Subject: [PATCH 080/189] introduce graphql-codegen and client --- desktop/.prettierignore | 2 + desktop/codegen.ts | 16 + desktop/package-lock.json | 25177 ++++++++++------ desktop/package.json | 5 +- desktop/packages/main/codegen.ts | 16 + desktop/packages/main/package.json | 4 +- .../packages/main/src/gql/fragment-masking.ts | 40 + desktop/packages/main/src/gql/gql.ts | 11 + desktop/packages/main/src/gql/graphql.ts | 208 + desktop/packages/main/src/gql/index.ts | 2 + desktop/packages/main/tsconfig.json | 3 +- 11 files changed, 15611 insertions(+), 9873 deletions(-) create mode 100644 desktop/codegen.ts create mode 100644 desktop/packages/main/codegen.ts create mode 100644 desktop/packages/main/src/gql/fragment-masking.ts create mode 100644 desktop/packages/main/src/gql/gql.ts create mode 100644 desktop/packages/main/src/gql/graphql.ts create mode 100644 desktop/packages/main/src/gql/index.ts diff --git a/desktop/.prettierignore b/desktop/.prettierignore index 6862acf5..b88ef610 100644 --- a/desktop/.prettierignore +++ b/desktop/.prettierignore @@ -6,3 +6,5 @@ packages/main/src/generated/http-client/* package-lock.json .electron-vendors.cache.json + +packages/main/src/gql/**/* diff --git a/desktop/codegen.ts b/desktop/codegen.ts new file mode 100644 index 00000000..8ee339c0 --- /dev/null +++ b/desktop/codegen.ts @@ -0,0 +1,16 @@ +import { CodegenConfig } from "@graphql-codegen/cli"; + +const config: CodegenConfig = { + overwrite: true, + schema: "../app/src/main/resources/graphql/schema.graphqls", + documents: ["src/**/*.ts{,x}"], + ignoreNoDocuments: true, + generates: { + "./src/gql/": { + preset: "client", + plugins: [], + }, + }, +}; + +export default config; diff --git a/desktop/package-lock.json b/desktop/package-lock.json index bc44b0aa..910e2d4d 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -16,6 +16,9 @@ "@stomp/stompjs": "6.1.2", "axios": "1.1.3", "electron-store": "8.1.0", + "graphql": "16.6.0", + "graphql-request": "5.0.0", + "graphql-ws": "5.11.2", "ws": "8.10.0" }, "devDependencies": { @@ -45,6 +48,167 @@ "node": ">=6.0.0" } }, + "node_modules/@ardatan/relay-compiler": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", + "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "chalk": "^4.0.0", + "fb-watchman": "^2.0.0", + "fbjs": "^3.0.0", + "glob": "^7.1.1", + "immutable": "~3.7.6", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "relay-runtime": "12.0.0", + "signedsource": "^1.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "relay-compiler": "bin/relay-compiler" + }, + "peerDependencies": { + "graphql": "*" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@ardatan/relay-compiler/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@ardatan/sync-fetch": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz", + "integrity": "sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -57,9 +221,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.0.tgz", - "integrity": "sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", "engines": { "node": ">=6.9.0" } @@ -148,6 +312,27 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/helper-environment-visitor": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", @@ -179,6 +364,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", @@ -208,10 +405,38 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, "engines": { "node": ">=6.9.0" } @@ -227,6 +452,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", @@ -363,11 +600,13 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { + "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { @@ -377,17 +616,17 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", - "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.19.0" + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" }, "engines": { "node": ">=6.9.0" @@ -396,13 +635,25 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-development": { + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -411,11 +662,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { + "node_modules/@babel/plugin-syntax-jsx": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", - "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", - "dev": true, + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -426,452 +676,479 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", - "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", - "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.10" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz", - "integrity": "sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "dependencies": { - "core-js-pure": "^3.25.1", - "regenerator-runtime": "^0.13.10" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", - "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.0", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse/node_modules/globals": { + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "engines": { "node": ">=4" } }, - "node_modules/@babel/types": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", - "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/accordion": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.2.tgz", - "integrity": "sha512-Jf7A6I0eIGk34zO5TiTW8orJOFQb5A/D1ekNYbaukNccoUPKJg/xdQ/b00oIR6LT93nJxggkoP/vszfmmTHuFg==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, "dependencies": { - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/transition": "2.0.11" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/alert": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", - "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", + "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", + "dev": true, "dependencies": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/spinner": "2.0.10" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-flow": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/anatomy": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", - "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" - }, - "node_modules/@chakra-ui/avatar": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.0.tgz", - "integrity": "sha512-mpAkfr/JG+BNBw2WvU55CSRFYKeFBUyAQAu3YulznLzi2U3e7k3IA0J8ofbrDYlSH/9KqkDuuSrxqGZgct+Nug==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, "dependencies": { - "@chakra-ui/image": "2.0.11", - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/breadcrumb": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.0.tgz", - "integrity": "sha512-khBR579SLDEo6Wuo3tETRY6m0yJD/WCvSR7Res2g1B6OJgc9OQGM7yIMu4OdLUTwfXsCnlHTDoSQPUxFOVAMIQ==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, "dependencies": { - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/breakpoint-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", - "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@chakra-ui/button": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", - "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, "dependencies": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/spinner": "2.0.10" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/checkbox": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.2.tgz", - "integrity": "sha512-Y6Zbkkk5VNoe0RzqU6F+rKlFVPlubz1KIgYcb7CCNHGOM97dLtRm78eAvJ+7Xmpitr+7zZ4hJLLjfAz+e1X7rA==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, "dependencies": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/visually-hidden": "2.0.11", - "@zag-js/focus-visible": "0.1.0" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/clickable": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", - "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, "dependencies": { - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/close-button": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", - "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "dev": true, "dependencies": { - "@chakra-ui/icon": "3.0.11" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/color-mode": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", - "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, "dependencies": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/control-box": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", - "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/counter": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", - "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, "dependencies": { - "@chakra-ui/number-utils": "2.0.4", - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/css-reset": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", - "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { - "@emotion/react": ">=10.0.35", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/descendant": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", - "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, "dependencies": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/dom-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", - "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" - }, - "node_modules/@chakra-ui/editable": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.13.tgz", - "integrity": "sha512-GM3n8t3/TOFFcDOWF/tuKsnqn66isZLsU+FkMRY2o0E8XjLBGjCKuXInPW5SRBqhje7EHC+kwViLE780PfwXbw==", + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, "dependencies": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/event-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", - "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" - }, - "node_modules/@chakra-ui/focus-lock": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", - "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, "dependencies": { - "@chakra-ui/dom-utils": "2.0.3", - "react-focus-lock": "^2.9.1" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/form-control": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", - "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, "dependencies": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/hooks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.1.0.tgz", - "integrity": "sha512-4H6BDITq/YrStW99LXurgPkcz4qHSVy9V/QWXCvt1pCuiDTqNztiW4r508H3ApAOsL9NEbyXcM/zWYD7r5VDjA==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, "dependencies": { - "@chakra-ui/react-utils": "2.0.8", - "@chakra-ui/utils": "2.0.11", - "compute-scroll-into-view": "1.0.14", - "copy-to-clipboard": "3.3.1" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@chakra-ui/icon": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", - "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", + "node_modules/@babel/runtime": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", + "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", "dependencies": { - "@chakra-ui/shared-utils": "2.0.2" + "regenerator-runtime": "^0.13.10" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@chakra-ui/image": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", - "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", + "node_modules/@babel/runtime-corejs3": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz", + "integrity": "sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA==", + "dev": true, "dependencies": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.10" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@chakra-ui/input": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.12.tgz", - "integrity": "sha512-lJ5necu+Wt698HdCTC7L/ErA2nNVJAra7+knPe0qMR+AizGEL7LKCV/bdQe7eggjvKsDGD4alJIEczUvm3JVUQ==", + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dependencies": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/object-utils": "2.0.4", - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@chakra-ui/layout": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.9.tgz", - "integrity": "sha512-ztsavtirtdtjxdqIkGR6fVcrffHp6hs1twRFO/dK14FGXrX3Nn9mi3J1fr1ITBHJq6y5B3yFEj0LHN2fO8dYyw==", + "node_modules/@babel/traverse": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", + "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", "dependencies": { - "@chakra-ui/breakpoint-utils": "2.0.4", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/object-utils": "2.0.4", - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@chakra-ui/lazy-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", - "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" - }, - "node_modules/@chakra-ui/live-region": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", - "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", - "peerDependencies": { - "react": ">=18" + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" } }, - "node_modules/@chakra-ui/media-query": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", - "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", + "node_modules/@babel/types": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", + "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", "dependencies": { - "@chakra-ui/breakpoint-utils": "2.0.4", - "@chakra-ui/react-env": "2.0.10" + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@chakra-ui/menu": { + "node_modules/@chakra-ui/accordion": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.2.tgz", - "integrity": "sha512-6Z7ecXjp6BtZ1ExbFggfxsAj1hwtcathXekmCTxHpXOD+BdjAC/13+oLclwXeuBO85aoTmQrQ2ovfTkO31bzRQ==", + "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.2.tgz", + "integrity": "sha512-Jf7A6I0eIGk34zO5TiTW8orJOFQb5A/D1ekNYbaukNccoUPKJg/xdQ/b00oIR6LT93nJxggkoP/vszfmmTHuFg==", "dependencies": { - "@chakra-ui/clickable": "2.0.10", "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/icon": "3.0.11", "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-animation-state": "2.0.5", "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-focus-effect": "2.0.5", "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-outside-click": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4", "@chakra-ui/transition": "2.0.11" }, "peerDependencies": { @@ -880,494 +1157,386 @@ "react": ">=18" } }, - "node_modules/@chakra-ui/modal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.2.tgz", - "integrity": "sha512-cCYuqLZO4QqFUI1H+uEqixDk6UiCP3yC+sxkhFTXHIApSG9Z44v5np7BVTd6LKdmAN8pAWcc8Oxf14RvD6LWLw==", - "dependencies": { - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/focus-lock": "2.0.12", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/transition": "2.0.11", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.5.4" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/number-input": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", - "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", + "node_modules/@chakra-ui/alert": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", + "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", "dependencies": { - "@chakra-ui/counter": "2.0.10", - "@chakra-ui/form-control": "2.0.11", "@chakra-ui/icon": "3.0.11", "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-interval": "2.0.2", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4" + "@chakra-ui/spinner": "2.0.10" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/number-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", - "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" - }, - "node_modules/@chakra-ui/object-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", - "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + "node_modules/@chakra-ui/anatomy": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", + "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" }, - "node_modules/@chakra-ui/pin-input": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.15.tgz", - "integrity": "sha512-Ha8siSZm9gyjHHBK8ejwhKT6+75U12I/hNiYFvl2JHhc+Uh8tdi7+N+9SILO5vqbIv9kb+WGitvZ67I0cHjSfw==", + "node_modules/@chakra-ui/avatar": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.0.tgz", + "integrity": "sha512-mpAkfr/JG+BNBw2WvU55CSRFYKeFBUyAQAu3YulznLzi2U3e7k3IA0J8ofbrDYlSH/9KqkDuuSrxqGZgct+Nug==", "dependencies": { - "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/image": "2.0.11", "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@chakra-ui/react-context": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/popover": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", - "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", + "node_modules/@chakra-ui/breadcrumb": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.0.tgz", + "integrity": "sha512-khBR579SLDEo6Wuo3tETRY6m0yJD/WCvSR7Res2g1B6OJgc9OQGM7yIMu4OdLUTwfXsCnlHTDoSQPUxFOVAMIQ==", "dependencies": { - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-animation-state": "2.0.5", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-focus-effect": "2.0.5", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/popper": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", - "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", - "dependencies": { - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@popperjs/core": "^2.9.3" - }, - "peerDependencies": { - "react": ">=18" - } + "node_modules/@chakra-ui/breakpoint-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", + "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" }, - "node_modules/@chakra-ui/portal": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", - "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", + "node_modules/@chakra-ui/button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", + "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", "dependencies": { "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/progress": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.12.tgz", - "integrity": "sha512-9qtZimZosTliI7siAZkLeCVdCpXCTxmSETCudHcCUsC+FtcFacmA65+We8qij1nOIqmsbm+NYU6PP89TU2n4Hg==", - "dependencies": { - "@chakra-ui/react-context": "2.0.4" + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/spinner": "2.0.10" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/provider": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.20.tgz", - "integrity": "sha512-mNNfsgm05G4x1VzvHVR9+PNEiuxNnn9xUKDuEwoaO7+IHCMzCRMtPbSJjwmv0xvHUGB9+JChjPpZI5RuHQziJQ==", - "dependencies": { - "@chakra-ui/css-reset": "2.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-env": "2.0.10", - "@chakra-ui/system": "2.3.0", - "@chakra-ui/utils": "2.0.11" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0", - "@emotion/styled": "^11.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/radio": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", - "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", + "node_modules/@chakra-ui/checkbox": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.2.tgz", + "integrity": "sha512-Y6Zbkkk5VNoe0RzqU6F+rKlFVPlubz1KIgYcb7CCNHGOM97dLtRm78eAvJ+7Xmpitr+7zZ4hJLLjfAz+e1X7rA==", "dependencies": { "@chakra-ui/form-control": "2.0.11", "@chakra-ui/react-context": "2.0.4", "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/visually-hidden": "2.0.11", "@zag-js/focus-visible": "0.1.0" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.6.tgz", - "integrity": "sha512-xo43UU+yMqRGHZLU4fSgzojeRl5stlIfT+GLbT9CUVEm0HMJCt2m8RsNPBvGOMzANdC+bzwSiOm+MNzQBi9IBQ==", + "node_modules/@chakra-ui/clickable": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", + "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", "dependencies": { - "@chakra-ui/accordion": "2.1.2", - "@chakra-ui/alert": "2.0.11", - "@chakra-ui/avatar": "2.2.0", - "@chakra-ui/breadcrumb": "2.1.0", - "@chakra-ui/button": "2.0.11", - "@chakra-ui/checkbox": "2.2.2", - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/control-box": "2.0.10", - "@chakra-ui/counter": "2.0.10", - "@chakra-ui/css-reset": "2.0.8", - "@chakra-ui/editable": "2.0.13", - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/hooks": "2.1.0", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/image": "2.0.11", - "@chakra-ui/input": "2.0.12", - "@chakra-ui/layout": "2.1.9", - "@chakra-ui/live-region": "2.0.10", - "@chakra-ui/media-query": "3.2.7", - "@chakra-ui/menu": "2.1.2", - "@chakra-ui/modal": "2.2.2", - "@chakra-ui/number-input": "2.0.12", - "@chakra-ui/pin-input": "2.0.15", - "@chakra-ui/popover": "2.1.1", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/progress": "2.0.12", - "@chakra-ui/provider": "2.0.20", - "@chakra-ui/radio": "2.0.12", - "@chakra-ui/react-env": "2.0.10", - "@chakra-ui/select": "2.0.12", - "@chakra-ui/skeleton": "2.0.17", - "@chakra-ui/slider": "2.0.12", - "@chakra-ui/spinner": "2.0.10", - "@chakra-ui/stat": "2.0.11", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/switch": "2.0.14", - "@chakra-ui/system": "2.3.0", - "@chakra-ui/table": "2.0.11", - "@chakra-ui/tabs": "2.1.4", - "@chakra-ui/tag": "2.0.11", - "@chakra-ui/textarea": "2.0.12", - "@chakra-ui/theme": "2.1.14", - "@chakra-ui/theme-utils": "2.0.1", - "@chakra-ui/toast": "4.0.0", - "@chakra-ui/tooltip": "2.2.0", - "@chakra-ui/transition": "2.0.11", - "@chakra-ui/utils": "2.0.11", - "@chakra-ui/visually-hidden": "2.0.11" + "@chakra-ui/react-use-merge-refs": "2.0.4" }, - "peerDependencies": { - "@emotion/react": "^11.0.0", - "@emotion/styled": "^11.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/react-children-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.3.tgz", - "integrity": "sha512-tPQjLEEuAw/DYLRw0cNs/g8tcdhZ3r21Sr9dTAzoyvfk0vbZ24gCXRElltW2GZLiFA63mAidzhPmc+yQF3Wtgg==", "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-context": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", - "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "node_modules/@chakra-ui/close-button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", + "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "dependencies": { + "@chakra-ui/icon": "3.0.11" + }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-env": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", - "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", + "node_modules/@chakra-ui/color-mode": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", + "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", + "dependencies": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + }, "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", - "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", + "node_modules/@chakra-ui/control-box": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", + "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-animation-state": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", - "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", + "node_modules/@chakra-ui/counter": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", + "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", "dependencies": { - "@chakra-ui/dom-utils": "2.0.3", - "@chakra-ui/react-use-event-listener": "2.0.4" + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-use-callback-ref": "2.0.4" }, "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-callback-ref": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", - "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "node_modules/@chakra-ui/css-reset": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", + "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", "peerDependencies": { + "@emotion/react": ">=10.0.35", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-controllable-state": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", - "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", + "node_modules/@chakra-ui/descendant": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", + "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" }, "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-disclosure": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", - "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", - "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" - }, - "peerDependencies": { - "react": ">=18" - } + "node_modules/@chakra-ui/dom-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", + "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" }, - "node_modules/@chakra-ui/react-use-event-listener": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", - "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", + "node_modules/@chakra-ui/editable": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.13.tgz", + "integrity": "sha512-GM3n8t3/TOFFcDOWF/tuKsnqn66isZLsU+FkMRY2o0E8XjLBGjCKuXInPW5SRBqhje7EHC+kwViLE780PfwXbw==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-focus-effect": { + "node_modules/@chakra-ui/event-utils": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", - "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", + "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", + "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" + }, + "node_modules/@chakra-ui/focus-lock": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", + "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", "dependencies": { "@chakra-ui/dom-utils": "2.0.3", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4" + "react-focus-lock": "^2.9.1" }, "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-focus-on-pointer-down": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", - "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", + "node_modules/@chakra-ui/form-control": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", + "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", "dependencies": { - "@chakra-ui/react-use-event-listener": "2.0.4" + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-interval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", - "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", + "node_modules/@chakra-ui/hooks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.1.0.tgz", + "integrity": "sha512-4H6BDITq/YrStW99LXurgPkcz4qHSVy9V/QWXCvt1pCuiDTqNztiW4r508H3ApAOsL9NEbyXcM/zWYD7r5VDjA==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/utils": "2.0.11", + "compute-scroll-into-view": "1.0.14", + "copy-to-clipboard": "3.3.1" }, "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-latest-ref": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", - "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-merge-refs": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", - "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-outside-click": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", - "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", + "node_modules/@chakra-ui/icon": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", + "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/shared-utils": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-pan-event": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", - "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", + "node_modules/@chakra-ui/image": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", + "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", "dependencies": { - "@chakra-ui/event-utils": "2.0.5", - "@chakra-ui/react-use-latest-ref": "2.0.2", - "framesync": "5.3.0" + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-previous": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", - "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-safe-layout-effect": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", - "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-size": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", - "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", + "node_modules/@chakra-ui/input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.12.tgz", + "integrity": "sha512-lJ5necu+Wt698HdCTC7L/ErA2nNVJAra7+knPe0qMR+AizGEL7LKCV/bdQe7eggjvKsDGD4alJIEczUvm3JVUQ==", "dependencies": { - "@zag-js/element-size": "0.1.0" + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-timeout": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", - "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", + "node_modules/@chakra-ui/layout": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.9.tgz", + "integrity": "sha512-ztsavtirtdtjxdqIkGR6fVcrffHp6hs1twRFO/dK14FGXrX3Nn9mi3J1fr1ITBHJq6y5B3yFEj0LHN2fO8dYyw==", "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/react-use-update-effect": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", - "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", + "node_modules/@chakra-ui/lazy-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", + "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" + }, + "node_modules/@chakra-ui/live-region": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", + "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", "peerDependencies": { "react": ">=18" } }, - "node_modules/@chakra-ui/react-utils": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", - "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", + "node_modules/@chakra-ui/media-query": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", + "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", "dependencies": { - "@chakra-ui/utils": "2.0.11" + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/react-env": "2.0.10" }, "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/select": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", - "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "node_modules/@chakra-ui/menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.2.tgz", + "integrity": "sha512-6Z7ecXjp6BtZ1ExbFggfxsAj1hwtcathXekmCTxHpXOD+BdjAC/13+oLclwXeuBO85aoTmQrQ2ovfTkO31bzRQ==", "dependencies": { - "@chakra-ui/form-control": "2.0.11" + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-outside-click": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/transition": "2.0.11" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/shared-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", - "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" - }, - "node_modules/@chakra-ui/skeleton": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", - "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "node_modules/@chakra-ui/modal": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.2.tgz", + "integrity": "sha512-cCYuqLZO4QqFUI1H+uEqixDk6UiCP3yC+sxkhFTXHIApSG9Z44v5np7BVTd6LKdmAN8pAWcc8Oxf14RvD6LWLw==", "dependencies": { - "@chakra-ui/media-query": "3.2.7", - "@chakra-ui/react-use-previous": "2.0.2" + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/focus-lock": "2.0.12", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.11", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.5.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@chakra-ui/slider": { + "node_modules/@chakra-ui/number-input": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", - "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", + "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", "dependencies": { - "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/icon": "3.0.11", "@chakra-ui/react-context": "2.0.4", "@chakra-ui/react-types": "2.0.3", "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-latest-ref": "2.0.2", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-interval": "2.0.2", "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-pan-event": "2.0.5", - "@chakra-ui/react-use-size": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", "@chakra-ui/react-use-update-effect": "2.0.4" }, "peerDependencies": { @@ -1375,43 +1544,47 @@ "react": ">=18" } }, - "node_modules/@chakra-ui/spinner": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", - "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } + "node_modules/@chakra-ui/number-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", + "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" }, - "node_modules/@chakra-ui/stat": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", - "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", + "node_modules/@chakra-ui/object-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", + "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + }, + "node_modules/@chakra-ui/pin-input": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.15.tgz", + "integrity": "sha512-Ha8siSZm9gyjHHBK8ejwhKT6+75U12I/hNiYFvl2JHhc+Uh8tdi7+N+9SILO5vqbIv9kb+WGitvZ67I0cHjSfw==", "dependencies": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4" + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/styled-system": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", - "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", - "dependencies": { - "csstype": "^3.0.11", - "lodash.mergewith": "4.6.2" - } - }, - "node_modules/@chakra-ui/switch": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.14.tgz", - "integrity": "sha512-6lzhCkJq7vbD3yGaorGLp0ZZU4ewdKwAu0e62qR8TfYZwbcbpkXbBKloIHbA2XKOduISzS2WYqjmoP6jSKIxrA==", + "node_modules/@chakra-ui/popover": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", + "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", "dependencies": { - "@chakra-ui/checkbox": "2.2.2" + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", @@ -1419,3074 +1592,2979 @@ "react": ">=18" } }, - "node_modules/@chakra-ui/system": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.3.0.tgz", - "integrity": "sha512-BxikahglBI0uU8FE3anEorDTU5oKTUuBIEKVcQrEVnrbNuRJEy1OVYyCNXfqW3MpruRO9ypYV2bWt02AZZWEaQ==", - "dependencies": { - "@chakra-ui/color-mode": "2.1.9", - "@chakra-ui/react-utils": "2.0.8", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/theme-utils": "2.0.1", - "@chakra-ui/utils": "2.0.11", - "react-fast-compare": "3.2.0" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0", - "@emotion/styled": "^11.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/table": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", - "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", + "node_modules/@chakra-ui/popper": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", + "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", "dependencies": { - "@chakra-ui/react-context": "2.0.4" + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@popperjs/core": "^2.9.3" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/tabs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.4.tgz", - "integrity": "sha512-/CQGj1lC9lvruT5BCYZH6Ok64W4CDSysDXuR2XPZXIih9kVOdXQEMXxG8+3vc63WqTBjHuURtZI0g8ouOy84ew==", + "node_modules/@chakra-ui/portal": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", + "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", "dependencies": { - "@chakra-ui/clickable": "2.0.10", - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/react-children-utils": "2.0.3", "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", "@chakra-ui/react-use-safe-layout-effect": "2.0.2" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/tag": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", - "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", - "dependencies": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@chakra-ui/textarea": { + "node_modules/@chakra-ui/progress": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", - "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.12.tgz", + "integrity": "sha512-9qtZimZosTliI7siAZkLeCVdCpXCTxmSETCudHcCUsC+FtcFacmA65+We8qij1nOIqmsbm+NYU6PP89TU2n4Hg==", "dependencies": { - "@chakra-ui/form-control": "2.0.11" + "@chakra-ui/react-context": "2.0.4" }, "peerDependencies": { "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/theme": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.14.tgz", - "integrity": "sha512-6EYJCQlrjSjNAJvZmw1un50F8+sQDFsdwu/7UzWe+TeANpKlz4ZcHbh0gkl3PD62lGis+ehITUwqRm8htvDOjw==", + "node_modules/@chakra-ui/provider": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.20.tgz", + "integrity": "sha512-mNNfsgm05G4x1VzvHVR9+PNEiuxNnn9xUKDuEwoaO7+IHCMzCRMtPbSJjwmv0xvHUGB9+JChjPpZI5RuHQziJQ==", "dependencies": { - "@chakra-ui/anatomy": "2.0.7", - "@chakra-ui/theme-tools": "2.0.12" + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/system": "2.3.0", + "@chakra-ui/utils": "2.0.11" }, "peerDependencies": { - "@chakra-ui/styled-system": ">=2.0.0" + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@chakra-ui/theme-tools": { + "node_modules/@chakra-ui/radio": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", - "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", + "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", + "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", "dependencies": { - "@chakra-ui/anatomy": "2.0.7", - "@ctrl/tinycolor": "^3.4.0" + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@zag-js/focus-visible": "0.1.0" }, "peerDependencies": { - "@chakra-ui/styled-system": ">=2.0.0" - } - }, - "node_modules/@chakra-ui/theme-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.1.tgz", - "integrity": "sha512-NDwzgTPxm+v3PAJlSSU1MORHLMqO9vsRJ+ObELD5wpvE9aEyRziN/AZSoK2oLwCQMPEiU7R99K5ij1E6ptMt7w==", - "dependencies": { - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/theme": "2.1.14", - "lodash.mergewith": "4.6.2" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@chakra-ui/toast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-4.0.0.tgz", - "integrity": "sha512-abeeloJac5T9WK2IN76fEM5FSRH+erNXln2HqDf5wLBn33avSBXWyTiUL8riVSUqto0lrIn6FuK/MmKo0DH4og==", + "node_modules/@chakra-ui/react": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.6.tgz", + "integrity": "sha512-xo43UU+yMqRGHZLU4fSgzojeRl5stlIfT+GLbT9CUVEm0HMJCt2m8RsNPBvGOMzANdC+bzwSiOm+MNzQBi9IBQ==", "dependencies": { + "@chakra-ui/accordion": "2.1.2", "@chakra-ui/alert": "2.0.11", + "@chakra-ui/avatar": "2.2.0", + "@chakra-ui/breadcrumb": "2.1.0", + "@chakra-ui/button": "2.0.11", + "@chakra-ui/checkbox": "2.2.2", "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/control-box": "2.0.10", + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/editable": "2.0.13", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/hooks": "2.1.0", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/image": "2.0.11", + "@chakra-ui/input": "2.0.12", + "@chakra-ui/layout": "2.1.9", + "@chakra-ui/live-region": "2.0.10", + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/menu": "2.1.2", + "@chakra-ui/modal": "2.2.2", + "@chakra-ui/number-input": "2.0.12", + "@chakra-ui/pin-input": "2.0.15", + "@chakra-ui/popover": "2.1.1", + "@chakra-ui/popper": "3.0.8", "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-use-timeout": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/progress": "2.0.12", + "@chakra-ui/provider": "2.0.20", + "@chakra-ui/radio": "2.0.12", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/select": "2.0.12", + "@chakra-ui/skeleton": "2.0.17", + "@chakra-ui/slider": "2.0.12", + "@chakra-ui/spinner": "2.0.10", + "@chakra-ui/stat": "2.0.11", "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/theme": "2.1.14" - }, - "peerDependencies": { + "@chakra-ui/switch": "2.0.14", "@chakra-ui/system": "2.3.0", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/tooltip": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", - "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", - "dependencies": { - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@chakra-ui/table": "2.0.11", + "@chakra-ui/tabs": "2.1.4", + "@chakra-ui/tag": "2.0.11", + "@chakra-ui/textarea": "2.0.12", + "@chakra-ui/theme": "2.1.14", + "@chakra-ui/theme-utils": "2.0.1", + "@chakra-ui/toast": "4.0.0", + "@chakra-ui/tooltip": "2.2.0", + "@chakra-ui/transition": "2.0.11", + "@chakra-ui/utils": "2.0.11", + "@chakra-ui/visually-hidden": "2.0.11" }, "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", "framer-motion": ">=4.0.0", "react": ">=18", "react-dom": ">=18" } }, - "node_modules/@chakra-ui/transition": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.11.tgz", - "integrity": "sha512-O0grc162LARPurjz1R+J+zr4AAKsVwN5+gaqLfZLMWg6TpvczJhwEA2fLCNAdkC/gomere390bJsy52xfUacUw==", + "node_modules/@chakra-ui/react-children-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.3.tgz", + "integrity": "sha512-tPQjLEEuAw/DYLRw0cNs/g8tcdhZ3r21Sr9dTAzoyvfk0vbZ24gCXRElltW2GZLiFA63mAidzhPmc+yQF3Wtgg==", "peerDependencies": { - "framer-motion": ">=4.0.0", "react": ">=18" } }, - "node_modules/@chakra-ui/utils": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", - "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", - "dependencies": { - "@types/lodash.mergewith": "4.6.6", - "css-box-model": "1.2.1", - "framesync": "5.3.0", - "lodash.mergewith": "4.6.2" + "node_modules/@chakra-ui/react-context": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", + "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@chakra-ui/visually-hidden": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", - "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", + "node_modules/@chakra-ui/react-env": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", + "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", "react": ">=18" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, + "node_modules/@chakra-ui/react-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", + "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-animation-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", + "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@ctrl/tinycolor": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", - "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", - "engines": { - "node": ">=10" + "node_modules/@chakra-ui/react-use-callback-ref": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", + "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@develar/schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", - "dev": true, + "node_modules/@chakra-ui/react-use-controllable-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", + "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", "dependencies": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" + "@chakra-ui/react-use-callback-ref": "2.0.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@electron/get": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", - "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", - "dev": true, + "node_modules/@chakra-ui/react-use-disclosure": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", + "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", "dependencies": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "got": "^9.6.0", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - }, - "engines": { - "node": ">=8.6" + "@chakra-ui/react-use-callback-ref": "2.0.4" }, - "optionalDependencies": { - "global-agent": "^3.0.0", - "global-tunnel-ng": "^2.7.1" + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@electron/universal": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", - "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", - "dev": true, + "node_modules/@chakra-ui/react-use-event-listener": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", + "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", "dependencies": { - "@malept/cross-spawn-promise": "^1.1.0", - "asar": "^3.1.0", - "debug": "^4.3.1", - "dir-compare": "^2.4.0", - "fs-extra": "^9.0.1", - "minimatch": "^3.0.4", - "plist": "^3.0.4" + "@chakra-ui/react-use-callback-ref": "2.0.4" }, - "engines": { - "node": ">=8.6" + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@electron/universal/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, + "node_modules/@chakra-ui/react-use-focus-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", + "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@electron/universal/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, + "node_modules/@chakra-ui/react-use-focus-on-pointer-down": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", + "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", "dependencies": { - "universalify": "^2.0.0" + "@chakra-ui/react-use-event-listener": "2.0.4" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@electron/universal/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@emotion/babel-plugin": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", - "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "node_modules/@chakra-ui/react-use-interval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", + "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.17.12", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/serialize": "^1.1.1", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.1.3" + "@chakra-ui/react-use-callback-ref": "2.0.4" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "react": ">=18" } }, - "node_modules/@emotion/babel-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" + "node_modules/@chakra-ui/react-use-latest-ref": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", + "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@emotion/cache": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", - "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", - "dependencies": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.3" + "node_modules/@chakra-ui/react-use-merge-refs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", + "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@emotion/hash": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "node_modules/@chakra-ui/react-use-outside-click": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", + "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", "dependencies": { - "@emotion/memoize": "^0.8.0" + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@emotion/memoize": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" - }, - "node_modules/@emotion/react": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz", - "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==", + "node_modules/@chakra-ui/react-use-pan-event": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", + "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.5", - "@emotion/cache": "^11.10.5", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "hoist-non-react-statics": "^3.3.1" + "@chakra-ui/event-utils": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "framesync": "5.3.0" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/react": { - "optional": true - } + "react": ">=18" } }, - "node_modules/@emotion/serialize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", - "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", - "dependencies": { - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/unitless": "^0.8.0", - "@emotion/utils": "^1.2.0", - "csstype": "^3.0.2" + "node_modules/@chakra-ui/react-use-previous": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", + "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + "node_modules/@chakra-ui/react-use-safe-layout-effect": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", + "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", + "peerDependencies": { + "react": ">=18" + } }, - "node_modules/@emotion/styled": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz", - "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==", + "node_modules/@chakra-ui/react-use-size": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", + "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.5", - "@emotion/is-prop-valid": "^1.2.0", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0" + "@zag-js/element-size": "0.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/react": { - "optional": true - } + "react": ">=18" } }, - "node_modules/@emotion/unitless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "node_modules/@chakra-ui/react-use-timeout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", + "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.0.4" + }, "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz", - "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "react": ">=18" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz", - "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@chakra-ui/react-use-update-effect": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", + "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, + "node_modules/@chakra-ui/react-utils": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", + "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@chakra-ui/utils": "2.0.11" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "react": ">=18" } }, - "node_modules/@heroicons/react": { + "node_modules/@chakra-ui/select": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.12.tgz", - "integrity": "sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg==", + "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", + "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "dependencies": { + "@chakra-ui/form-control": "2.0.11" + }, "peerDependencies": { - "react": ">= 16" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, + "node_modules/@chakra-ui/shared-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", + "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" + }, + "node_modules/@chakra-ui/skeleton": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", + "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/react-use-previous": "2.0.2" }, - "engines": { - "node": ">=10.10.0" + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" + "node_modules/@chakra-ui/slider": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", + "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "dependencies": { + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-pan-event": "2.0.5", + "@chakra-ui/react-use-size": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "node_modules/@chakra-ui/spinner": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", + "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } }, - "node_modules/@jimp/bmp": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.2.tgz", - "integrity": "sha512-4g9vW45QfMoGhLVvaFj26h4e7cC+McHUQwyFQmNTLW4FfC1OonN9oUr2m/FEDGkTYKR7aqdXR5XUqqIkHWLaFw==", + "node_modules/@chakra-ui/stat": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", + "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2", - "bmp-js": "^0.1.0" + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@jimp/core": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.2.tgz", - "integrity": "sha512-dp7HcyUMzjXphXYodI6PaXue+I9PXAavbb+AN+1XqFbotN22Z12DosNPEyy+UhLY/hZiQQqUkEaJHkvV31rs+w==", + "node_modules/@chakra-ui/styled-system": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", + "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^9.0.0", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" + "csstype": "^3.0.11", + "lodash.mergewith": "4.6.2" } }, - "node_modules/@jimp/core/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/@chakra-ui/switch": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.14.tgz", + "integrity": "sha512-6lzhCkJq7vbD3yGaorGLp0ZZU4ewdKwAu0e62qR8TfYZwbcbpkXbBKloIHbA2XKOduISzS2WYqjmoP6jSKIxrA==", "dependencies": { - "minimist": "^1.2.6" + "@chakra-ui/checkbox": "2.2.2" }, - "bin": { - "mkdirp": "bin/cmd.js" + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" } }, - "node_modules/@jimp/custom": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.2.tgz", - "integrity": "sha512-GtNwOs4hcVS2GIbqRUf42rUuX07oLB92cj7cqxZb0ZGWwcwhnmSW0TFLAkNafXmqn9ug4VTpNvcJSUdiuECVKg==", + "node_modules/@chakra-ui/system": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.3.0.tgz", + "integrity": "sha512-BxikahglBI0uU8FE3anEorDTU5oKTUuBIEKVcQrEVnrbNuRJEy1OVYyCNXfqW3MpruRO9ypYV2bWt02AZZWEaQ==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.2" + "@chakra-ui/color-mode": "2.1.9", + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme-utils": "2.0.1", + "@chakra-ui/utils": "2.0.11", + "react-fast-compare": "3.2.0" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18" } }, - "node_modules/@jimp/gif": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.2.tgz", - "integrity": "sha512-TMdyT9Q0paIKNtT7c5KzQD29CNCsI/t8ka28jMrBjEK7j5RRTvBfuoOnHv7pDJRCjCIqeUoaUSJ7QcciKic6CA==", + "node_modules/@chakra-ui/table": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", + "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" + "@chakra-ui/react-context": "2.0.4" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@jimp/jpeg": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.2.tgz", - "integrity": "sha512-BW5gZydgq6wdIwHd+3iUNgrTklvoQc/FUKSj9meM6A0FU21lUaansRX5BDdJqHkyXJLnnlDGwDt27J+hQuBAVw==", + "node_modules/@chakra-ui/tabs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.4.tgz", + "integrity": "sha512-/CQGj1lC9lvruT5BCYZH6Ok64W4CDSysDXuR2XPZXIih9kVOdXQEMXxG8+3vc63WqTBjHuURtZI0g8ouOy84ew==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2", - "jpeg-js": "^0.4.2" + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@jimp/plugin-blit": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.2.tgz", - "integrity": "sha512-Z31rRfV80gC/r+B/bOPSVVpJEWXUV248j7MdnMOFLu4vr8DMqXVo9jYqvwU/s4LSTMAMXqm4Jg6E/jQfadPKAg==", + "node_modules/@chakra-ui/tag": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", + "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@jimp/plugin-blur": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.2.tgz", - "integrity": "sha512-ShkJCAzRI+1fAKPuLLgEkixpSpVmKTYaKEFROUcgmrv9AansDXGNCupchqVMTdxf8zPyW8rR1ilvG3OJobufLQ==", + "node_modules/@chakra-ui/textarea": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", + "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "@chakra-ui/form-control": "2.0.11" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@jimp/plugin-circle": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.2.tgz", - "integrity": "sha512-6T4z/48F4Z5+YwAVCLOvXQcyGmo0E3WztxCz6XGQf66r4JJK78+zcCDYZFLMx0BGM0091FogNK4QniP8JaOkrA==", + "node_modules/@chakra-ui/theme": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.14.tgz", + "integrity": "sha512-6EYJCQlrjSjNAJvZmw1un50F8+sQDFsdwu/7UzWe+TeANpKlz4ZcHbh0gkl3PD62lGis+ehITUwqRm8htvDOjw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "@chakra-ui/anatomy": "2.0.7", + "@chakra-ui/theme-tools": "2.0.12" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@chakra-ui/styled-system": ">=2.0.0" } }, - "node_modules/@jimp/plugin-color": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.2.tgz", - "integrity": "sha512-6oBV0g0J17/7E+aTquvUsgSc85nUbUi+64tIK5eFIDzvjhlqhjGNJYlc46KJMCWIs61qRJayQoZdL/iT/iQuGQ==", + "node_modules/@chakra-ui/theme-tools": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", + "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2", - "tinycolor2": "^1.4.1" + "@chakra-ui/anatomy": "2.0.7", + "@ctrl/tinycolor": "^3.4.0" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@chakra-ui/styled-system": ">=2.0.0" } }, - "node_modules/@jimp/plugin-contain": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.2.tgz", - "integrity": "sha512-pLcxO3hVN3LCEhMNvpZ9B7xILHVlS433Vv16zFFJxLRqZdYvPLsc+ZzJhjAiHHuEjVblQrktHE3LGeQwGJPo0w==", + "node_modules/@chakra-ui/theme-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.1.tgz", + "integrity": "sha512-NDwzgTPxm+v3PAJlSSU1MORHLMqO9vsRJ+ObELD5wpvE9aEyRziN/AZSoK2oLwCQMPEiU7R99K5ij1E6ptMt7w==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.14", + "lodash.mergewith": "4.6.2" } }, - "node_modules/@jimp/plugin-cover": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.2.tgz", - "integrity": "sha512-gzWM7VvYeI8msyiwbUZxH+sGQEgO6Vd6adGxZ0CeKX00uQOe5lDzxb1Wjx7sHcJGz8a/5fmAuwz7rdDtpDUbkw==", + "node_modules/@chakra-ui/toast": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-4.0.0.tgz", + "integrity": "sha512-abeeloJac5T9WK2IN76fEM5FSRH+erNXln2HqDf5wLBn33avSBXWyTiUL8riVSUqto0lrIn6FuK/MmKo0DH4og==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-use-timeout": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.14" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" + "@chakra-ui/system": "2.3.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@jimp/plugin-crop": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.2.tgz", - "integrity": "sha512-qCd3hfMEE+Z2EuuyXewgXRTtKJGIerWzc1zLEJztsUkPz5i73IGgkOL+mrNutZwGaXZbm+8SwUaGb46sxAO6Tw==", + "node_modules/@chakra-ui/tooltip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", + "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@jimp/plugin-displace": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.2.tgz", - "integrity": "sha512-6nXdvNNjCdD95v2o3/jPeur903dz08lG4Y8gmr5oL2yVv9LSSbMonoXYrR/ASesdyXqGdXJLU4NL+yZs4zUqbQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" - }, + "node_modules/@chakra-ui/transition": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.11.tgz", + "integrity": "sha512-O0grc162LARPurjz1R+J+zr4AAKsVwN5+gaqLfZLMWg6TpvczJhwEA2fLCNAdkC/gomere390bJsy52xfUacUw==", "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "framer-motion": ">=4.0.0", + "react": ">=18" } }, - "node_modules/@jimp/plugin-dither": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.2.tgz", - "integrity": "sha512-DERpIzy21ZanMkVsD0Tdy8HQLbD1E41OuvIzaMRoW4183PA6AgGNlrQoFTyXmzjy6FTy1SxaQgTEdouInAWZ9Q==", + "node_modules/@chakra-ui/utils": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", + "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" - }, + "@types/lodash.mergewith": "4.6.6", + "css-box-model": "1.2.1", + "framesync": "5.3.0", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/visually-hidden": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", + "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "node_modules/@jimp/plugin-fisheye": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.2.tgz", - "integrity": "sha512-Df7PsGIwiIpQu3EygYCnaJyTfOwvwtYV3cmYJS7yFLtdiFUuod+hlSo5GkwEPLAy+QBxhUbDuUqnsWo4NQtbiQ==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "@jridgewell/trace-mapping": "0.3.9" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=12" } }, - "node_modules/@jimp/plugin-flip": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.2.tgz", - "integrity": "sha512-+2uC8ioVQUr06mnjSWraskz2L33nJHze35LkQ8ZNsIpoZLkgvfiWatqAs5bj+1jGI/9kxoCFAaT1Is0f+a4/rw==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" + "node_modules/@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", + "engines": { + "node": ">=10" } }, - "node_modules/@jimp/plugin-gaussian": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.2.tgz", - "integrity": "sha512-2mnuDSg4ZEH8zcJig7DZZf4st/cYmQ5UYJKP76iGhZ+6JDACk6uejwAgT5xHecNhkVAaXMdCybA2eknH/9OE1w==", + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@jimp/plugin-invert": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.2.tgz", - "integrity": "sha512-xFvHbVepTY/nus+6yXiYN1iq+UBRkT0MdnObbiQPstUrAsz0Imn6MWISsnAyMvcNxHGrxaxjuU777JT/esM0gg==", + "node_modules/@electron/get": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=8.6" + }, + "optionalDependencies": { + "global-agent": "^3.0.0", + "global-tunnel-ng": "^2.7.1" } }, - "node_modules/@jimp/plugin-mask": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.2.tgz", - "integrity": "sha512-AbdO85xxhfgEDdxYKpUotEI9ixiCMaIpfYHD5a5O/VWeimz2kuwhcrzlHGiyq1kKAgRcl0WEneTCZAHVSyvPKA==", + "node_modules/@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=8.6" } }, - "node_modules/@jimp/plugin-normalize": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.2.tgz", - "integrity": "sha512-+ItBWFwmB0Od7OfOtTYT1gm543PpHUgU8/DN55z83l1JqS0OomDJAe7BmCppo2405TN6YtVm/csXo7p4iWd/SQ==", + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=10" } }, - "node_modules/@jimp/plugin-print": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.2.tgz", - "integrity": "sha512-ifTGEeJ5UZTCiqC70HMeU3iXk/vsOmhWiwVGOXSFXhFeE8ZpDWvlmBsrMYnRrJGuaaogHOIrrQPI+kCdDBSBIQ==", + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2", - "load-bmfont": "^1.4.0" + "universalify": "^2.0.0" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@jimp/plugin-resize": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.2.tgz", - "integrity": "sha512-gE4N9l6xuwzacFZ2EPCGZCJ/xR+aX2V7GdMndIl/6kYIw5/eib1SFuF9AZLvIPSFuE1FnGo8+vT0pr++SSbhYg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/@jimp/plugin-rotate": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.2.tgz", - "integrity": "sha512-/CTEYkR1HrgmnE0VqPhhbBARbDAfFX590LWGIpxcYIYsUUGQCadl+8Qo4UX13FH0Nt8UHEtPA+O2x08uPYg9UA==", + "node_modules/@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" + "@babel/core": "^7.0.0" } }, - "node_modules/@jimp/plugin-scale": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.2.tgz", - "integrity": "sha512-3inuxfrlquyLaqFdiiiQNJUurR0WbvN5wAf1qcYX2LubG1AG8grayYD6H7XVoxfUGTZXh1kpmeirEYlqA2zxcw==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@jimp/plugin-shadow": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.2.tgz", - "integrity": "sha512-Q0aIs2/L6fWMcEh9Ms73u34bT1hyUMw/oxaVoIzOLo6/E8YzCs2Bi63H0/qaPS0MQpEppI++kvosPbblABY79w==", + "node_modules/@emotion/cache": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", + "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.1", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.1.3" } }, - "node_modules/@jimp/plugin-threshold": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.2.tgz", - "integrity": "sha512-gyOwmBgjtMPvcuyOhkP6dOGWbQdaTfhcBRN22mYeI/k/Wh/Zh1OI21F6eKLApsVRmg15MoFnkrCz64RROC34sw==", + "node_modules/@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" + "@emotion/memoize": "^0.8.0" } }, - "node_modules/@jimp/plugins": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.2.tgz", - "integrity": "sha512-zCvYtCgctmC0tkYEu+y+kSwSIZBsNznqJ3/3vkpzxdyjd6wCfNY5Qc/68MPrLc1lmdeGo4cOOTYHG7Vc6myzRw==", + "node_modules/@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "node_modules/@emotion/react": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz", + "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.2", - "@jimp/plugin-blur": "^0.16.2", - "@jimp/plugin-circle": "^0.16.2", - "@jimp/plugin-color": "^0.16.2", - "@jimp/plugin-contain": "^0.16.2", - "@jimp/plugin-cover": "^0.16.2", - "@jimp/plugin-crop": "^0.16.2", - "@jimp/plugin-displace": "^0.16.2", - "@jimp/plugin-dither": "^0.16.2", - "@jimp/plugin-fisheye": "^0.16.2", - "@jimp/plugin-flip": "^0.16.2", - "@jimp/plugin-gaussian": "^0.16.2", - "@jimp/plugin-invert": "^0.16.2", - "@jimp/plugin-mask": "^0.16.2", - "@jimp/plugin-normalize": "^0.16.2", - "@jimp/plugin-print": "^0.16.2", - "@jimp/plugin-resize": "^0.16.2", - "@jimp/plugin-rotate": "^0.16.2", - "@jimp/plugin-scale": "^0.16.2", - "@jimp/plugin-shadow": "^0.16.2", - "@jimp/plugin-threshold": "^0.16.2", - "timm": "^1.6.1" + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/cache": "^11.10.5", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } } }, - "node_modules/@jimp/png": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.2.tgz", - "integrity": "sha512-sFOtOSz/tzDwXEChFQ/Nxe+0+vG3Tj0eUxnZVDUG/StXE9dI8Bqmwj3MIa0EgK5s+QG3YlnDOmlPUa4JqmeYeQ==", + "node_modules/@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.2", - "pngjs": "^3.3.3" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" } }, - "node_modules/@jimp/png/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" - } + "node_modules/@emotion/sheet": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", + "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" }, - "node_modules/@jimp/tiff": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.2.tgz", - "integrity": "sha512-ADcdqmtZF+U2YoaaHTzFX8D6NFpmN4WZUT0BPMerEuY7Cq8QoLYU22z2h034FrVW+Rbi1b3y04sB9iDiQAlf2w==", + "node_modules/@emotion/styled": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz", + "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" }, "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@babel/core": "^7.0.0", + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } } }, - "node_modules/@jimp/types": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.2.tgz", - "integrity": "sha512-0Ue5Sq0XnDF6TirisWv5E+8uOnRcd8vRLuwocJOhF76NIlcQrz+5r2k2XWKcr3d+11n28dHLXW5TKSqrUopxhA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.2", - "@jimp/gif": "^0.16.2", - "@jimp/jpeg": "^0.16.2", - "@jimp/png": "^0.16.2", - "@jimp/tiff": "^0.16.2", - "timm": "^1.6.1" - }, + "node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "react": ">=16.8.0" } }, - "node_modules/@jimp/utils": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.2.tgz", - "integrity": "sha512-XENrPvmigiXZQ8E2nxJqO6UVvWBLzbNwyYi3Y8Q1IECoYhYI3kgOQ0fmy4G269Vz1V0omh1bNmC42r4OfXg1Jg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } + "node_modules/@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } + "node_modules/@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "node_modules/@esbuild/android-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz", + "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz", + "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "node": ">=12" } }, - "node_modules/@malept/cross-spawn-promise": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", - "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/malept" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" - } - ], "dependencies": { - "cross-spawn": "^7.0.1" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">= 10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@malept/flatpak-bundler": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", - "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "node_modules/@graphql-codegen/add": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-3.2.1.tgz", + "integrity": "sha512-w82H/evh8SSGoD3K6K/Oh3kqSdbuU+TgHqMYmmHFxtH692v2xhN/cu1s/TotBQ7r4mO7OQutze7dde2tZEXGEQ==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.0", - "lodash": "^4.17.15", - "tmp-promise": "^3.0.2" + "@graphql-codegen/plugin-helpers": "^2.6.2", + "tslib": "~2.4.0" }, - "engines": { - "node": ">= 10.0.0" + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/@graphql-codegen/cli": { + "version": "2.13.11", + "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.13.11.tgz", + "integrity": "sha512-PJF36a1i6M7Btj1kB4PWWzBUO3u2BJzsd/6KXxRmEugcxrbaCnbTDDktopy0CZYKdqaFbXaowwbRY8Tk8DV99Q==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@babel/generator": "^7.18.13", + "@babel/template": "^7.18.10", + "@babel/types": "^7.18.13", + "@graphql-codegen/core": "2.6.5", + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/apollo-engine-loader": "^7.3.6", + "@graphql-tools/code-file-loader": "^7.3.1", + "@graphql-tools/git-loader": "^7.2.1", + "@graphql-tools/github-loader": "^7.3.6", + "@graphql-tools/graphql-file-loader": "^7.5.0", + "@graphql-tools/json-file-loader": "^7.4.1", + "@graphql-tools/load": "7.8.0", + "@graphql-tools/prisma-loader": "^7.2.7", + "@graphql-tools/url-loader": "^7.13.2", + "@graphql-tools/utils": "^8.9.0", + "@whatwg-node/fetch": "^0.3.0", + "ansi-escapes": "^4.3.1", + "chalk": "^4.1.0", + "chokidar": "^3.5.2", + "cosmiconfig": "^7.0.0", + "cosmiconfig-typescript-loader": "4.1.1", + "debounce": "^1.2.0", + "detect-indent": "^6.0.0", + "graphql-config": "4.3.6", + "inquirer": "^8.0.0", + "is-glob": "^4.0.1", + "json-to-pretty-yaml": "^1.2.2", + "listr2": "^4.0.5", + "log-symbols": "^4.0.0", + "mkdirp": "^1.0.4", + "shell-quote": "^1.7.3", + "string-env-interpolation": "^1.0.1", + "ts-log": "^2.2.3", + "tslib": "^2.4.0", + "yaml": "^1.10.0", + "yargs": "^17.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "gql-gen": "cjs/bin.js", + "graphql-code-generator": "cjs/bin.js", + "graphql-codegen": "cjs/bin.js", + "graphql-codegen-esm": "esm/bin.js" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/@graphql-codegen/client-preset": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-1.1.3.tgz", + "integrity": "sha512-u4h6X1AcaN93dItnvQEtQjSTpth140Ceac2W3gUNR3IWfFGKLr9HvjNsiIteIFulcUJvLdIAVTfbnO8MUC1Twg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/template": "^7.15.4", + "@graphql-codegen/add": "^3.2.1", + "@graphql-codegen/gql-tag-operations": "1.5.6", + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/typed-document-node": "^2.3.6", + "@graphql-codegen/typescript": "^2.8.1", + "@graphql-codegen/typescript-operations": "^2.5.6", + "@graphql-codegen/visitor-plugin-common": "^2.13.1", + "@graphql-tools/utils": "^8.8.0", + "@graphql-typed-document-node/core": "3.1.1", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/core": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.6.5.tgz", + "integrity": "sha512-oSbM8vINFxcV1GUasJTDIemMpEG1t6NkBG8odQCt/3ZExCYmoviHhG9vJB89QqJeU5W06qQB6SJn/dg/gv5Aqg==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/schema": "^9.0.0", + "@graphql-tools/utils": "9.0.0", + "tslib": "~2.4.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@malept/flatpak-bundler/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/@graphql-codegen/core/node_modules/@graphql-tools/utils": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.0.0.tgz", + "integrity": "sha512-kaCwyWnURxMsYbxzkfylLqFFelu83jKk3BJOOy0GIuxEtgXVS9v7Y/tojljo69Q+jaZ2YxAi3+d8IpM+hx768A==", "dev": true, - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@motionone/animation": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", - "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", + "node_modules/@graphql-codegen/gql-tag-operations": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-1.5.6.tgz", + "integrity": "sha512-SUeiBnVbV893paHud0Tr05hbZUMBeig6zcDoOw+9xoEivJUlCorOCXB3dXuUoRj+npOMH01IaFeGRbdiMm/RQg==", + "dev": true, "dependencies": { - "@motionone/easing": "^10.14.0", - "@motionone/types": "^10.14.0", - "@motionone/utils": "^10.14.0", - "tslib": "^2.3.1" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@motionone/dom": { - "version": "10.13.1", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", - "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", + "node_modules/@graphql-codegen/plugin-helpers": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", + "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", + "dev": true, "dependencies": { - "@motionone/animation": "^10.13.1", - "@motionone/generators": "^10.13.1", - "@motionone/types": "^10.13.0", - "@motionone/utils": "^10.13.1", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@motionone/easing": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", - "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", + "node_modules/@graphql-codegen/schema-ast": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-2.5.1.tgz", + "integrity": "sha512-tewa5DEKbglWn7kYyVBkh3J8YQ5ALqAMVmZwiVFIGOao5u66nd+e4HuFqp0u+Jpz4SJGGi0ap/oFrEvlqLjd2A==", + "dev": true, "dependencies": { - "@motionone/utils": "^10.14.0", - "tslib": "^2.3.1" + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-tools/utils": "^8.8.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@motionone/generators": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", - "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", + "node_modules/@graphql-codegen/typed-document-node": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-2.3.6.tgz", + "integrity": "sha512-uJqBNj9z/5iIUgLwXsyWmnBaCzRtK+OiZsknTQmjzx/BzKTXK5lrbn06n4KK690wqkelpdZplTtww34ExmHG9Q==", + "dev": true, "dependencies": { - "@motionone/types": "^10.14.0", - "@motionone/utils": "^10.14.0", - "tslib": "^2.3.1" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@motionone/types": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", - "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" - }, - "node_modules/@motionone/utils": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", - "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", + "node_modules/@graphql-codegen/typescript": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.8.1.tgz", + "integrity": "sha512-kweV1DOOH2blvMheVL55TT0s9bxkmF/zijN9mdk9pRD20i/rI/46qbh8fNKqy/PV12vZOmZGNL6tigdghG2bqg==", + "dev": true, "dependencies": { - "@motionone/types": "^10.14.0", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/schema-ast": "^2.5.1", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@nestjs/common": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", - "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", + "node_modules/@graphql-codegen/typescript-operations": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-2.5.6.tgz", + "integrity": "sha512-7WqOsVMTUXf+tdt0jGOBuQINLYjPIGlcsnkzXQSPJ7rSGVj99VobVuwgmAeFmJctZ3lgwx3gjPZ0dyCIOBc2/A==", "dev": true, "dependencies": { - "axios": "0.26.1", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/typescript": "^2.8.1", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" }, "peerDependencies": { - "cache-manager": "*", - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "cache-manager": { - "optional": true - }, - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@nestjs/common/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "node_modules/@graphql-codegen/visitor-plugin-common": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", + "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.8" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/optimize": "^1.3.0", + "@graphql-tools/relay-operation-optimizer": "^6.5.0", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@nestjs/common/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/@nestjs/common/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/@graphql-tools/apollo-engine-loader": { + "version": "7.3.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.3.18.tgz", + "integrity": "sha512-Qd1juunK4kH3xgF1aYJIcy8vD/f36Nm713r3ZaY2OKxc1+8d9PIYUlhIvcVUP1SzVxNWLbZm+q918QWFmI9p8A==", "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/utils": "9.1.0", + "@whatwg-node/fetch": "^0.5.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nestjs/core": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", - "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", + "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, - "hasInstallScript": true, "dependencies": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "3.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "tslib": "^2.4.0" }, "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0", - "@nestjs/websockets": "^8.0.0", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nestjs/core/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true + "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "dependencies": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } }, - "node_modules/@nestjs/core/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/@graphql-tools/batch-execute": { + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.11.tgz", + "integrity": "sha512-TWvTSJOG38y5GzKO8TLkURT0XJrQyCCwgCq/kr3YQHkw8BLwLbj3N6Pzp88oMJwAMfYOVCWoN4wU6DigUbOrAw==", "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "@graphql-tools/utils": "9.1.0", + "dataloader": "2.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@graphql-tools/batch-execute/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "tslib": "^2.4.0" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@graphql-tools/code-file-loader": { + "version": "7.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-7.3.11.tgz", + "integrity": "sha512-OMngFSlxthssPFl/VJG3qISXyqjuNF/3fqXFXL6wsCSTve3t13X8Y0oWr3s20fMnJhZNHq0CVtDZutmSUPX7Xw==", "dev": true, - "engines": { - "node": ">= 8" + "dependencies": { + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@graphql-tools/code-file-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "tslib": "^2.4.0" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nut-tree/libnut": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.3.0.tgz", - "integrity": "sha512-EAbwcA3xv4zZWX8EmcKzWlWON1hf/IxJsMAdApRqObhoarpBQO28DoHAxZW7HQPP/T9S1YrLHONjGxwUzippQQ==", + "node_modules/@graphql-tools/delegate": { + "version": "9.0.15", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-9.0.15.tgz", + "integrity": "sha512-55BTS/EDr/tt+fifY5pM8HwF9fYZo0ukv90Udan1mWnyQTZpBTRhg0MUKnWRl9vcaPkDZIkfJaG2sraFM5gZyw==", + "dev": true, "dependencies": { - "@nut-tree/libnut-darwin": "2.3.0", - "@nut-tree/libnut-linux": "2.3.0", - "@nut-tree/libnut-win32": "2.3.0" + "@graphql-tools/batch-execute": "8.5.11", + "@graphql-tools/executor": "0.0.7", + "@graphql-tools/schema": "9.0.9", + "@graphql-tools/utils": "9.1.0", + "dataloader": "2.1.0", + "tslib": "~2.4.0", + "value-or-promise": "1.0.11" }, - "engines": { - "node": ">=10.15.3" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nut-tree/libnut-darwin": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.3.0.tgz", - "integrity": "sha512-hbNW0WN5Olrrcl59sNXCdJCHmaclwk5G/FMQcP8NoTNWkSv2L+zxXZ5dNt13DErCv9HCvMrof20nBz82LArNXg==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], + "node_modules/@graphql-tools/delegate/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, "dependencies": { - "bindings": "1.5.0", - "cmake-js": "6.1.0", - "node-addon-api": "3.0.0" + "tslib": "^2.4.0" }, - "engines": { - "node": ">=10.15.3" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nut-tree/libnut-darwin/node_modules/node-addon-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", - "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" - }, - "node_modules/@nut-tree/libnut-linux": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.3.0.tgz", - "integrity": "sha512-Hc2GsW4/BNYViqqaaaQCytj2C4NWNCJGGhCbznjyqI2cAHU3y5Hx+Frlkcnohfo+ofyOZOlPDQSxtP+E4tmVOw==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], + "node_modules/@graphql-tools/executor": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-0.0.7.tgz", + "integrity": "sha512-NfTru2DjgvuRF1PlYBHFhfsUwNiNBsby8LPlvPtB5duizbw0rQW14h1RM2IfBowR0wH42NRAJZWEW8Nbvlf0Dg==", + "dev": true, "dependencies": { - "bindings": "1.5.0", - "cmake-js": "6.1.0", - "node-addon-api": "3.0.0" + "@graphql-tools/utils": "9.1.0", + "@graphql-typed-document-node/core": "3.1.1", + "@repeaterjs/repeater": "3.0.4", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" }, - "engines": { - "node": ">=10.15.3" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nut-tree/libnut-linux/node_modules/node-addon-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", - "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" - }, - "node_modules/@nut-tree/libnut-win32": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.3.0.tgz", - "integrity": "sha512-2v9fBVekJn9ktyI2IWmYlLzNqGBdkaSscfqKmT7Kdzshh6nbsqeawRmhFc4IgTOJBSruz7oc6AWAWsRk9OL3FQ==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], + "node_modules/@graphql-tools/executor-graphql-ws": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-0.0.2.tgz", + "integrity": "sha512-VydPeunrAihvAHAnIFQynSVwtmciMUmkMgW/CMqZODjeOPqCkWuu1CXATnqU/i3tjf9Z3iLiYheCDKfJpOcEFw==", + "dev": true, "dependencies": { - "bindings": "1.5.0", - "cmake-js": "6.1.0", - "node-addon-api": "3.0.0" + "@graphql-tools/utils": "9.1.0", + "@repeaterjs/repeater": "3.0.4", + "@types/ws": "^8.0.0", + "graphql-ws": "5.11.2", + "isomorphic-ws": "5.0.0", + "tslib": "^2.4.0", + "ws": "8.11.0" }, - "engines": { - "node": ">=10.15.3" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nut-tree/libnut-win32/node_modules/node-addon-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", - "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" - }, - "node_modules/@nut-tree/nut-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-2.3.0.tgz", - "integrity": "sha512-QOQeuwlB1e+Ctj7h0lcIzxeWs1tR8DACxCURDsS/TxsYP0SqNBsc+ov4GjwJGOI80WOe00gXahnqVPie4qjfSg==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "linux", - "darwin", - "win32" - ], + "node_modules/@graphql-tools/executor-graphql-ws/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, "dependencies": { - "@nut-tree/libnut": "2.3.0", - "clipboardy": "2.3.0", - "jimp": "0.16.2", - "node-abort-controller": "2.0.0" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "node_modules/@graphql-tools/executor-graphql-ws/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" + "engines": { + "node": ">=10.0.0" }, - "bin": { - "opencollective": "bin/opencollective.js" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@openapitools/openapi-generator-cli": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", - "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", + "node_modules/@graphql-tools/executor-http": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-0.0.2.tgz", + "integrity": "sha512-++ezIUeCcDc03jQpGnmVzw32P1aJSKH0FFXY/4zWnwdgCr2WdBBQCnYjptV1rjd5mohW2iIwRYc+HRw+TZzfXg==", "dev": true, - "hasInstallScript": true, "dependencies": { - "@nestjs/common": "8.4.4", - "@nestjs/core": "8.4.4", - "@nuxtjs/opencollective": "0.3.2", - "chalk": "4.1.2", - "commander": "8.3.0", - "compare-versions": "4.1.3", - "concurrently": "6.5.1", - "console.table": "0.10.0", - "fs-extra": "10.0.1", - "glob": "7.1.6", - "inquirer": "8.2.2", - "lodash": "4.17.21", - "reflect-metadata": "0.1.13", - "rxjs": "7.5.5", - "tslib": "2.0.3" - }, - "bin": { - "openapi-generator-cli": "main.js" + "@graphql-tools/utils": "9.1.0", + "@repeaterjs/repeater": "3.0.4", + "@whatwg-node/fetch": "0.5.1", + "dset": "3.1.2", + "extract-files": "^11.0.0", + "meros": "1.2.1", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" }, - "engines": { - "node": ">=10.0.0" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-http/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/openapi_generator" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/@graphql-tools/executor-http/node_modules/@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", "dev": true, - "engines": { - "node": ">= 12" + "dependencies": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "node_modules/@graphql-tools/executor-legacy-ws": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-0.0.2.tgz", + "integrity": "sha512-ntIhYyK+keFk0LjQfH3/DHJRQufe1hH0ei9PXgds94Zg2GEjk49zxytxPfFC+hkqLXTAz8mGVj8MsuhDdEBtzw==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@graphql-tools/utils": "9.1.0", + "@types/ws": "^8.0.0", + "isomorphic-ws": "5.0.0", + "tslib": "^2.4.0", + "ws": "8.11.0" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/@graphql-tools/executor-legacy-ws/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "tslib": "^2.4.0" }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-legacy-ws/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, "engines": { - "node": "*" + "node": ">=10.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/@graphql-tools/executor/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "tslib": "^2.4.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "dev": true + "node_modules/@graphql-tools/git-loader": { + "version": "7.2.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-7.2.11.tgz", + "integrity": "sha512-a/uL8PAgMcXV7wY3LjMXgTcrWt2iGpcYTRHVMN4QgwW9PTAOPcYjxZ9BfNPTEDZt/zk0Gd8YxgtCrg8ui+bLCg==", + "dev": true, + "dependencies": { + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "is-glob": "4.0.3", + "micromatch": "^4.0.4", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/@graphql-tools/git-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@pkgr/utils": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", - "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "node_modules/@graphql-tools/github-loader": { + "version": "7.3.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.3.18.tgz", + "integrity": "sha512-xQ7L+CWuA6vMCNDfXodCPCDFfoRL+LtFKqxhpA3wU8kVhWOm+QP3sJeVrRj2FAoIKHxcoUYsT4QflqKFj/vsQA==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "is-glob": "^4.0.3", - "open": "^8.4.0", - "picocolors": "^1.0.0", - "tiny-glob": "^0.2.9", + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "@whatwg-node/fetch": "^0.5.0", "tslib": "^2.4.0" }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/github-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" }, - "funding": { - "url": "https://opencollective.com/unts" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "node_modules/@graphql-tools/github-loader/node_modules/@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "dependencies": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" } }, - "node_modules/@react-hook/debounce": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@react-hook/debounce/-/debounce-3.0.0.tgz", - "integrity": "sha512-ir/kPrSfAzY12Gre0sOHkZ2rkEmM4fS5M5zFxCi4BnCeXh2nvx9Ujd+U4IGpKCuPA+EQD0pg1eK2NGLvfWejag==", + "node_modules/@graphql-tools/graphql-file-loader": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.5.10.tgz", + "integrity": "sha512-G7/jO0v4sdKik0hyKo1XTXdJoOy6uU6enVvaiK07cVLXjf4+N08orP2ZeiRw6IUxYErPvZgOHJKAZZaeSjIF2A==", + "dev": true, "dependencies": { - "@react-hook/latest": "^1.0.2" + "@graphql-tools/import": "6.7.11", + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" }, "peerDependencies": { - "react": ">=16.8" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@react-hook/event": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@react-hook/event/-/event-1.2.6.tgz", - "integrity": "sha512-JUL5IluaOdn5w5Afpe/puPa1rj8X6udMlQ9dt4hvMuKmTrBS1Ya6sb4sVgvfe2eU4yDuOfAhik8xhbcCekbg9Q==", - "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/@react-hook/latest": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz", - "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==", + "node_modules/@graphql-tools/graphql-file-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, "peerDependencies": { - "react": ">=16.8" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@react-hook/throttle": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@react-hook/throttle/-/throttle-2.2.0.tgz", - "integrity": "sha512-LJ5eg+yMV8lXtqK3lR+OtOZ2WH/EfWvuiEEu0M3bhR7dZRfTyEJKxH1oK9uyBxiXPtWXiQggWbZirMCXam51tg==", + "node_modules/@graphql-tools/graphql-tag-pluck": { + "version": "7.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.3.11.tgz", + "integrity": "sha512-BU7ArN8+tv0KG3I4cuMF7MOpaVVOuqF6tnAmMjFqTrYOOJaQeTzweSvy6qtdkHA/sFZuttLa7BHxvJv4B4xS9w==", + "dev": true, "dependencies": { - "@react-hook/latest": "^1.0.2" + "@babel/parser": "^7.16.8", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" }, "peerDependencies": { - "react": ">=16.8" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@react-hook/window-size": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@react-hook/window-size/-/window-size-3.1.1.tgz", - "integrity": "sha512-yWnVS5LKnOUIrEsI44oz3bIIUYqflamPL27n+k/PC//PsX/YeWBky09oPeAoc9As6jSH16Wgo8plI+ECZaHk3g==", + "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, "dependencies": { - "@react-hook/debounce": "^3.0.0", - "@react-hook/event": "^1.2.1", - "@react-hook/throttle": "^2.2.0" + "tslib": "^2.4.0" }, "peerDependencies": { - "react": ">=16.8" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "node_modules/@graphql-tools/import": { + "version": "6.7.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.7.11.tgz", + "integrity": "sha512-hd3HqNE5JLnOwPcr48vnTShldzRr5sRqrxqj9ouzEnqXUC1Pu/tMqp7p3K8ZPeaMw9h8aiUBBhvNM2sbSW51dQ==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@graphql-tools/utils": "9.1.0", + "resolve-from": "5.0.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@smartpointer-desktop/eslintrc": { - "resolved": "packages/eslintrc", - "link": true - }, - "node_modules/@smartpointer-desktop/main": { - "resolved": "packages/main", - "link": true - }, - "node_modules/@smartpointer-desktop/preload": { - "resolved": "packages/preload", - "link": true - }, - "node_modules/@smartpointer-desktop/renderer": { - "resolved": "packages/renderer", - "link": true - }, - "node_modules/@smartpointer-desktop/shared": { - "resolved": "packages/shared", - "link": true - }, - "node_modules/@smartpointer-desktop/tsconfig": { - "resolved": "packages/tsconfig", - "link": true - }, - "node_modules/@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "node_modules/@graphql-tools/import/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "defer-to-connect": "^1.0.1" + "tslib": "^2.4.0" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/@graphql-tools/import/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@tsconfig/node16-strictest-esm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16-strictest-esm/-/node16-strictest-esm-1.0.3.tgz", - "integrity": "sha512-0/QTPDkKmE2dy0dMRstPCv4VJ+gUGgvMKzaWd5P3hgdlmPqYqe1pJxDGUlNYbSgUBlncIvvX+mIeZarokysNgg==", - "dev": true - }, - "node_modules/@tsconfig/strictest": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-1.0.2.tgz", - "integrity": "sha512-IRKlC8cnP7zMz1SDBjyIVyPapkEGWLZ6wkF6Z8T+xU80P9sO5uGXlIUvtzjx+7ehPJRWxkB6CeIDwUfyqNtYkQ==" - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "node_modules/@graphql-tools/json-file-loader": { + "version": "7.4.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-7.4.11.tgz", + "integrity": "sha512-uxWpbI0sT9i3bUX50joJKMafI7Gnb7W62B8om/qaCkQUjN1UmJmAea+z0afEoko/SsTYbBlWiu8Kw1M0UuzyHQ==", "dev": true, "dependencies": { - "@types/ms": "*" + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "node_modules/@graphql-tools/json-file-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@types/node": "*" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "node_modules/@graphql-tools/load": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.8.0.tgz", + "integrity": "sha512-l4FGgqMW0VOqo+NMYizwV8Zh+KtvVqOf93uaLo9wJ3sS3y/egPCgxPMDJJ/ufQZG3oZ/0oWeKt68qop3jY0yZg==", "dev": true, - "optional": true, "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "@graphql-tools/schema": "9.0.4", + "@graphql-tools/utils": "8.12.0", + "p-limit": "3.1.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/lodash": { - "version": "4.14.186", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz", - "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==" - }, - "node_modules/@types/lodash.mergewith": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz", - "integrity": "sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==", + "node_modules/@graphql-tools/load/node_modules/@graphql-tools/merge": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.6.tgz", + "integrity": "sha512-uUBokxXi89bj08P+iCvQk3Vew4vcfL5ZM6NTylWi8PIpoq4r5nJ625bRuN8h2uubEdRiH8ntN9M4xkd/j7AybQ==", + "dev": true, "dependencies": { - "@types/lodash": "*" + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "node_modules/@graphql-tools/load/node_modules/@graphql-tools/schema": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.4.tgz", + "integrity": "sha512-B/b8ukjs18fq+/s7p97P8L1VMrwapYc3N2KvdG/uNThSazRRn8GsBK0Nr+FH+mVKiUfb4Dno79e3SumZVoHuOQ==", "dev": true, - "optional": true - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", - "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "dependencies": { + "@graphql-tools/merge": "8.3.6", + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } }, - "node_modules/@types/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "node_modules/@graphql-tools/load/node_modules/@graphql-tools/utils": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.12.0.tgz", + "integrity": "sha512-TeO+MJWGXjUTS52qfK4R8HiPoF/R7X+qmgtOYd8DTH0l6b+5Y/tlg5aGeUJefqImRq7nvi93Ms40k/Uz4D5CWw==", "dev": true, - "optional": true, "dependencies": { - "@types/node": "*", - "xmlbuilder": ">=11.0.1" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "devOptional": true - }, - "node_modules/@types/qrcode": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", - "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "node_modules/@graphql-tools/merge": { + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.11.tgz", + "integrity": "sha512-IpZh8r8e8FycXaUv04xe5HQH9siD1tkS8MvaO8Wb2FaPXv15XSYP+Wsb2MUStpIqGfQxa6xY/+eEuxv+VqwXyg==", "dev": true, "dependencies": { - "@types/node": "*" + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/react": { - "version": "18.0.24", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz", - "integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==", - "devOptional": true, + "node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/react-dom": { - "version": "18.0.8", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.8.tgz", - "integrity": "sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==", + "node_modules/@graphql-tools/optimize": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.3.1.tgz", + "integrity": "sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==", "dev": true, "dependencies": { - "@types/react": "*" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "devOptional": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/verror": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", - "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", - "dev": true, - "optional": true - }, - "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "node_modules/@graphql-tools/prisma-loader": { + "version": "7.2.34", + "resolved": "https://registry.npmjs.org/@graphql-tools/prisma-loader/-/prisma-loader-7.2.34.tgz", + "integrity": "sha512-0yPFnGKF0qdql4IgUKpAKedQ7ou803oZdjJoopeL2IHiE8nV/rlskp+r/zb+7W6awtwNuvPR5joqM2L0HZa5mQ==", "dev": true, "dependencies": { - "@types/node": "*" + "@graphql-tools/url-loader": "7.16.14", + "@graphql-tools/utils": "9.1.0", + "@types/js-yaml": "^4.0.0", + "@types/json-stable-stringify": "^1.0.32", + "@types/jsonwebtoken": "^8.5.0", + "chalk": "^4.1.0", + "debug": "^4.3.1", + "dotenv": "^16.0.0", + "graphql-request": "^5.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "isomorphic-fetch": "^3.0.0", + "js-yaml": "^4.0.0", + "json-stable-stringify": "^1.0.1", + "jsonwebtoken": "^8.5.1", + "lodash": "^4.17.20", + "scuid": "^1.1.0", + "tslib": "^2.4.0", + "yaml-ast-parser": "^0.0.43" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/yargs": { - "version": "17.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", - "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", + "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "node_modules/@graphql-tools/prisma-loader/node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=12" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz", - "integrity": "sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==", + "node_modules/@graphql-tools/relay-operation-optimizer": { + "version": "6.5.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.11.tgz", + "integrity": "sha512-afIcawEBYnLN/A0oGIi4wKPCSduhYcTkNCbplnFpfm0NSpQ6CfMs30rJwUrsKhkRmTi7wIpOhFk8i1Xe46LT0w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.41.0", - "@typescript-eslint/type-utils": "5.41.0", - "@typescript-eslint/utils": "5.41.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "tslib": "^2.4.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.41.0.tgz", - "integrity": "sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==", + "node_modules/@graphql-tools/schema": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.9.tgz", + "integrity": "sha512-hwg8trUytO5ayQ8bzL3+sAyXcu2rhKt5pLXpLO0/TMTN2nXd3DBO4mqx+Ra4Er2mE/msInGQ5EmZbxVBPv+hSg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.41.0", - "@typescript-eslint/types": "5.41.0", - "@typescript-eslint/typescript-estree": "5.41.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@graphql-tools/merge": "8.3.11", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.41.0.tgz", - "integrity": "sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==", + "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.41.0", - "@typescript-eslint/visitor-keys": "5.41.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "tslib": "^2.4.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.41.0.tgz", - "integrity": "sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==", + "node_modules/@graphql-tools/url-loader": { + "version": "7.16.14", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.16.14.tgz", + "integrity": "sha512-nrjOz1ya1Qu6oETBPJSF0kKxo3UGT+qyi9TqMCnSQ/2R67ADicK7McSWfLdEUneADWhCx26b3XsOrQTKiG1KFg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.41.0", - "@typescript-eslint/utils": "5.41.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/delegate": "9.0.15", + "@graphql-tools/executor-graphql-ws": "0.0.2", + "@graphql-tools/executor-http": "0.0.2", + "@graphql-tools/executor-legacy-ws": "0.0.2", + "@graphql-tools/utils": "9.1.0", + "@graphql-tools/wrap": "9.2.11", + "@types/ws": "^8.0.0", + "@whatwg-node/fetch": "^0.5.0", + "isomorphic-ws": "5.0.0", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.11", + "ws": "8.11.0" }, "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.41.0.tgz", - "integrity": "sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==", + "node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "tslib": "^2.4.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.41.0.tgz", - "integrity": "sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==", + "node_modules/@graphql-tools/url-loader/node_modules/@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.41.0", - "@typescript-eslint/visitor-keys": "5.41.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } + }, + "node_modules/@graphql-tools/url-loader/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { - "typescript": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/@graphql-tools/utils": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", + "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "tslib": "^2.4.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.41.0.tgz", - "integrity": "sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==", + "node_modules/@graphql-tools/wrap": { + "version": "9.2.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-9.2.11.tgz", + "integrity": "sha512-QzzyfUQ/roXh7F7Bk0xDOaX9Wp6yafIg3S+rkcSrWrGmxPckCp95YqAtoZLp5HE/XcoZNvw2vD110n0F9nOg6g==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.41.0", - "@typescript-eslint/types": "5.41.0", - "@typescript-eslint/typescript-estree": "5.41.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@graphql-tools/delegate": "9.0.15", + "@graphql-tools/schema": "9.0.9", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/@graphql-tools/wrap/node_modules/@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "tslib": "^2.4.0" }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "node_modules/@graphql-typed-document-node/core": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.41.0.tgz", - "integrity": "sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==", + "node_modules/@heroicons/react": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.12.tgz", + "integrity": "sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg==", + "peerDependencies": { + "react": ">= 16" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.41.0", - "eslint-visitor-keys": "^3.3.0" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10.10.0" } }, - "node_modules/@vitejs/plugin-react": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", - "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "dependencies": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-jsx": "^7.19.0", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-jsx-self": "^7.18.6", - "@babel/plugin-transform-react-jsx-source": "^7.19.6", - "magic-string": "^0.26.7", - "react-refresh": "^0.14.0" - }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">=12.22" }, - "peerDependencies": { - "vite": "^3.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@zag-js/element-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz", - "integrity": "sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==" - }, - "node_modules/@zag-js/focus-visible": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz", - "integrity": "sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==" + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, - "node_modules/7zip-bin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", - "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "dev": true }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" + "node_modules/@jimp/bmp": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.2.tgz", + "integrity": "sha512-4g9vW45QfMoGhLVvaFj26h4e7cC+McHUQwyFQmNTLW4FfC1OonN9oUr2m/FEDGkTYKR7aqdXR5XUqqIkHWLaFw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "bmp-js": "^0.1.0" }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@jimp/custom": ">=0.3.5" } }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" + "node_modules/@jimp/core": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.2.tgz", + "integrity": "sha512-dp7HcyUMzjXphXYodI6PaXue+I9PXAavbb+AN+1XqFbotN22Z12DosNPEyy+UhLY/hZiQQqUkEaJHkvV31rs+w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, + "node_modules/@jimp/core/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "debug": "4" + "minimist": "^1.2.6" }, - "engines": { - "node": ">= 6.0.0" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@jimp/custom": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.2.tgz", + "integrity": "sha512-GtNwOs4hcVS2GIbqRUf42rUuX07oLB92cj7cqxZb0ZGWwcwhnmSW0TFLAkNafXmqn9ug4VTpNvcJSUdiuECVKg==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.2" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/@jimp/gif": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.2.tgz", + "integrity": "sha512-TMdyT9Q0paIKNtT7c5KzQD29CNCsI/t8ka28jMrBjEK7j5RRTvBfuoOnHv7pDJRCjCIqeUoaUSJ7QcciKic6CA==", "dependencies": { - "ajv": "^8.0.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" }, "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "@jimp/custom": ">=0.3.5" } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "node_modules/@jimp/jpeg": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.2.tgz", + "integrity": "sha512-BW5gZydgq6wdIwHd+3iUNgrTklvoQc/FUKSj9meM6A0FU21lUaansRX5BDdJqHkyXJLnnlDGwDt27J+hQuBAVw==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "jpeg-js": "^0.4.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, + "node_modules/@jimp/plugin-blit": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.2.tgz", + "integrity": "sha512-Z31rRfV80gC/r+B/bOPSVVpJEWXUV248j7MdnMOFLu4vr8DMqXVo9jYqvwU/s4LSTMAMXqm4Jg6E/jQfadPKAg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, "peerDependencies": { - "ajv": "^6.9.1" + "@jimp/custom": ">=0.3.5" } }, - "node_modules/ansi": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", - "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==" - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, + "node_modules/@jimp/plugin-blur": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.2.tgz", + "integrity": "sha512-ShkJCAzRI+1fAKPuLLgEkixpSpVmKTYaKEFROUcgmrv9AansDXGNCupchqVMTdxf8zPyW8rR1ilvG3OJobufLQ==", "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/@jimp/plugin-circle": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.2.tgz", + "integrity": "sha512-6T4z/48F4Z5+YwAVCLOvXQcyGmo0E3WztxCz6XGQf66r4JJK78+zcCDYZFLMx0BGM0091FogNK4QniP8JaOkrA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" + "node_modules/@jimp/plugin-color": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.2.tgz", + "integrity": "sha512-6oBV0g0J17/7E+aTquvUsgSc85nUbUi+64tIK5eFIDzvjhlqhjGNJYlc46KJMCWIs61qRJayQoZdL/iT/iQuGQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@jimp/plugin-contain": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.2.tgz", + "integrity": "sha512-pLcxO3hVN3LCEhMNvpZ9B7xILHVlS433Vv16zFFJxLRqZdYvPLsc+ZzJhjAiHHuEjVblQrktHE3LGeQwGJPo0w==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" } }, - "node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@jimp/plugin-cover": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.2.tgz", + "integrity": "sha512-gzWM7VvYeI8msyiwbUZxH+sGQEgO6Vd6adGxZ0CeKX00uQOe5lDzxb1Wjx7sHcJGz8a/5fmAuwz7rdDtpDUbkw==", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" } }, - "node_modules/app-builder-bin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", - "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", - "dev": true - }, - "node_modules/app-builder-lib": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", - "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", - "dev": true, + "node_modules/@jimp/plugin-crop": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.2.tgz", + "integrity": "sha512-qCd3hfMEE+Z2EuuyXewgXRTtKJGIerWzc1zLEJztsUkPz5i73IGgkOL+mrNutZwGaXZbm+8SwUaGb46sxAO6Tw==", "dependencies": { - "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.2.1", - "@malept/flatpak-bundler": "^0.4.0", - "7zip-bin": "~5.1.1", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.4", - "ejs": "^3.1.7", - "electron-osx-sign": "^0.6.0", - "electron-publish": "23.6.0", - "form-data": "^4.0.0", - "fs-extra": "^10.1.0", - "hosted-git-info": "^4.1.0", - "is-ci": "^3.0.0", - "isbinaryfile": "^4.0.10", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^3.1.2", - "read-config-file": "6.2.0", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.7", - "tar": "^6.1.11", - "temp-file": "^3.4.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/app-builder-lib/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, + "node_modules/@jimp/plugin-displace": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.2.tgz", + "integrity": "sha512-6nXdvNNjCdD95v2o3/jPeur903dz08lG4Y8gmr5oL2yVv9LSSbMonoXYrR/ASesdyXqGdXJLU4NL+yZs4zUqbQ==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/app-builder-lib/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.2.tgz", + "integrity": "sha512-DERpIzy21ZanMkVsD0Tdy8HQLbD1E41OuvIzaMRoW4183PA6AgGNlrQoFTyXmzjy6FTy1SxaQgTEdouInAWZ9Q==", "dependencies": { - "universalify": "^2.0.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/app-builder-lib/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.2.tgz", + "integrity": "sha512-Df7PsGIwiIpQu3EygYCnaJyTfOwvwtYV3cmYJS7yFLtdiFUuod+hlSo5GkwEPLAy+QBxhUbDuUqnsWo4NQtbiQ==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/app-builder-lib/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" + "node_modules/@jimp/plugin-flip": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.2.tgz", + "integrity": "sha512-+2uC8ioVQUr06mnjSWraskz2L33nJHze35LkQ8ZNsIpoZLkgvfiWatqAs5bj+1jGI/9kxoCFAaT1Is0f+a4/rw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/are-we-there-yet": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", - "integrity": "sha512-Zfw6bteqM9gQXZ1BIWOgM8xEwMrUGoyL8nW13+O+OOgNX3YhuDN1GDgg1NzdTlmm3j+9sHy7uBZ12r+z9lXnZQ==", + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.2.tgz", + "integrity": "sha512-2mnuDSg4ZEH8zcJig7DZZf4st/cYmQ5UYJKP76iGhZ+6JDACk6uejwAgT5xHecNhkVAaXMdCybA2eknH/9OE1w==", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.0 || ^1.1.13" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/are-we-there-yet/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "node_modules/@jimp/plugin-invert": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.2.tgz", + "integrity": "sha512-xFvHbVepTY/nus+6yXiYN1iq+UBRkT0MdnObbiQPstUrAsz0Imn6MWISsnAyMvcNxHGrxaxjuU777JT/esM0gg==", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/are-we-there-yet/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/are-we-there-yet/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/@jimp/plugin-mask": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.2.tgz", + "integrity": "sha512-AbdO85xxhfgEDdxYKpUotEI9ixiCMaIpfYHD5a5O/VWeimz2kuwhcrzlHGiyq1kKAgRcl0WEneTCZAHVSyvPKA==", "dependencies": { - "safe-buffer": "~5.1.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/aria-hidden": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz", - "integrity": "sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==", + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.2.tgz", + "integrity": "sha512-+ItBWFwmB0Od7OfOtTYT1gm543PpHUgU8/DN55z83l1JqS0OomDJAe7BmCppo2405TN6YtVm/csXo7p4iWd/SQ==", "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@jimp/custom": ">=0.3.5" } }, - "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, + "node_modules/@jimp/plugin-print": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.2.tgz", + "integrity": "sha512-ifTGEeJ5UZTCiqC70HMeU3iXk/vsOmhWiwVGOXSFXhFeE8ZpDWvlmBsrMYnRrJGuaaogHOIrrQPI+kCdDBSBIQ==", "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "load-bmfont": "^1.4.0" }, - "engines": { - "node": ">=6.0" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" } }, - "node_modules/array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, + "node_modules/@jimp/plugin-resize": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.2.tgz", + "integrity": "sha512-gE4N9l6xuwzacFZ2EPCGZCJ/xR+aX2V7GdMndIl/6kYIw5/eib1SFuF9AZLvIPSFuE1FnGo8+vT0pr++SSbhYg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@jimp/plugin-rotate": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.2.tgz", + "integrity": "sha512-/CTEYkR1HrgmnE0VqPhhbBARbDAfFX590LWGIpxcYIYsUUGQCadl+8Qo4UX13FH0Nt8UHEtPA+O2x08uPYg9UA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, + "node_modules/@jimp/plugin-scale": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.2.tgz", + "integrity": "sha512-3inuxfrlquyLaqFdiiiQNJUurR0WbvN5wAf1qcYX2LubG1AG8grayYD6H7XVoxfUGTZXh1kpmeirEYlqA2zxcw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", - "dev": true, + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.2.tgz", + "integrity": "sha512-Q0aIs2/L6fWMcEh9Ms73u34bT1hyUMw/oxaVoIzOLo6/E8YzCs2Bi63H0/qaPS0MQpEppI++kvosPbblABY79w==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" } }, - "node_modules/asar": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", - "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", - "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change", - "dev": true, + "node_modules/@jimp/plugin-threshold": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.2.tgz", + "integrity": "sha512-gyOwmBgjtMPvcuyOhkP6dOGWbQdaTfhcBRN22mYeI/k/Wh/Zh1OI21F6eKLApsVRmg15MoFnkrCz64RROC34sw==", "dependencies": { - "chromium-pickle-js": "^0.2.0", - "commander": "^5.0.0", - "glob": "^7.1.6", - "minimatch": "^3.0.4" - }, - "bin": { - "asar": "bin/asar.js" - }, - "engines": { - "node": ">=10.12.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" }, - "optionalDependencies": { - "@types/glob": "^7.1.1" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "node_modules/@jimp/plugins": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.2.tgz", + "integrity": "sha512-zCvYtCgctmC0tkYEu+y+kSwSIZBsNznqJ3/3vkpzxdyjd6wCfNY5Qc/68MPrLc1lmdeGo4cOOTYHG7Vc6myzRw==", "dependencies": { - "safer-buffer": "~2.1.0" + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.2", + "@jimp/plugin-blur": "^0.16.2", + "@jimp/plugin-circle": "^0.16.2", + "@jimp/plugin-color": "^0.16.2", + "@jimp/plugin-contain": "^0.16.2", + "@jimp/plugin-cover": "^0.16.2", + "@jimp/plugin-crop": "^0.16.2", + "@jimp/plugin-displace": "^0.16.2", + "@jimp/plugin-dither": "^0.16.2", + "@jimp/plugin-fisheye": "^0.16.2", + "@jimp/plugin-flip": "^0.16.2", + "@jimp/plugin-gaussian": "^0.16.2", + "@jimp/plugin-invert": "^0.16.2", + "@jimp/plugin-mask": "^0.16.2", + "@jimp/plugin-normalize": "^0.16.2", + "@jimp/plugin-print": "^0.16.2", + "@jimp/plugin-resize": "^0.16.2", + "@jimp/plugin-rotate": "^0.16.2", + "@jimp/plugin-scale": "^0.16.2", + "@jimp/plugin-shadow": "^0.16.2", + "@jimp/plugin-threshold": "^0.16.2", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" + "node_modules/@jimp/png": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.2.tgz", + "integrity": "sha512-sFOtOSz/tzDwXEChFQ/Nxe+0+vG3Tj0eUxnZVDUG/StXE9dI8Bqmwj3MIa0EgK5s+QG3YlnDOmlPUa4JqmeYeQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "optional": true, + "node_modules/@jimp/png/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "node_modules/@jimp/tiff": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.2.tgz", + "integrity": "sha512-ADcdqmtZF+U2YoaaHTzFX8D6NFpmN4WZUT0BPMerEuY7Cq8QoLYU22z2h034FrVW+Rbi1b3y04sB9iDiQAlf2w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } }, - "node_modules/async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" + "node_modules/@jimp/types": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.2.tgz", + "integrity": "sha512-0Ue5Sq0XnDF6TirisWv5E+8uOnRcd8vRLuwocJOhF76NIlcQrz+5r2k2XWKcr3d+11n28dHLXW5TKSqrUopxhA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.2", + "@jimp/gif": "^0.16.2", + "@jimp/jpeg": "^0.16.2", + "@jimp/png": "^0.16.2", + "@jimp/tiff": "^0.16.2", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "engines": { - "node": ">=10.12.0" + "node_modules/@jimp/utils": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.2.tgz", + "integrity": "sha512-XENrPvmigiXZQ8E2nxJqO6UVvWBLzbNwyYi3Y8Q1IECoYhYI3kgOQ0fmy4G269Vz1V0omh1bNmC42r4OfXg1Jg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" } }, - "node_modules/attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "engines": { - "node": "*" + "node": ">=6.0.0" } }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "node_modules/axe-core": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.0.tgz", - "integrity": "sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==", - "dev": true, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "engines": { - "node": ">=4" - } - }, - "node_modules/axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "node": ">=6.0.0" } }, - "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "individual", + "url": "https://github.com/sponsors/malept" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + ], "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "cross-spawn": "^7.0.1" + }, "engines": { - "node": ">=0.6" + "node": ">= 10" } }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" }, "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" + "node": ">= 10.0.0" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, "dependencies": { - "file-uri-to-path": "1.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/@malept/flatpak-bundler/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": ">= 10.0.0" } }, - "node_modules/bl/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "node_modules/@motionone/animation": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", + "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", "dependencies": { - "safe-buffer": "~5.2.0" + "@motionone/easing": "^10.14.0", + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/bluebird-lst": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", - "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", - "dev": true, + "node_modules/@motionone/dom": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", + "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", "dependencies": { - "bluebird": "^3.5.5" + "@motionone/animation": "^10.13.1", + "@motionone/generators": "^10.13.1", + "@motionone/types": "^10.13.0", + "@motionone/utils": "^10.13.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" } }, - "node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" - }, - "node_modules/boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "dev": true, - "optional": true + "node_modules/@motionone/easing": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", + "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", + "dependencies": { + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@motionone/generators": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", + "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@motionone/types": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", + "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" + }, + "node_modules/@motionone/utils": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", + "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" + "@motionone/types": "^10.14.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" } }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], + "node_modules/@nestjs/common": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", + "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", + "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "axios": "0.26.1", + "iterare": "1.2.1", + "tslib": "2.3.1", + "uuid": "8.3.2" }, - "bin": { - "browserslist": "cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" + "peerDependencies": { + "cache-manager": "*", + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "cache-manager": { + "optional": true }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "class-transformer": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "class-validator": { + "optional": true } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "node_modules/@nestjs/common/node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", "dev": true, "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "follow-redirects": "^1.14.8" } }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "node_modules/@nestjs/common/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "engines": { - "node": "*" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "node_modules/@nestjs/core": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", + "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", "dev": true, - "engines": { - "node": ">=0.4.0" + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "object-hash": "3.0.0", + "path-to-regexp": "3.2.0", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0", + "@nestjs/microservices": "^8.0.0", + "@nestjs/platform-express": "^8.0.0", + "@nestjs/websockets": "^8.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } } }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "node_modules/@nestjs/core/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": ">=0.10" + "node": ">= 8" } }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g==" - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "engines": { - "node": ">=0.2.0" + "node": ">= 8" } }, - "node_modules/builder-util": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", - "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@types/debug": "^4.1.6", - "@types/fs-extra": "^9.0.11", - "7zip-bin": "~5.1.1", - "app-builder-bin": "4.0.0", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.1.1", - "chalk": "^4.1.1", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "fs-extra": "^10.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-ci": "^3.0.0", - "js-yaml": "^4.1.0", - "source-map-support": "^0.5.19", - "stat-mode": "^1.0.0", - "temp-file": "^3.4.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "node_modules/@nut-tree/libnut": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.3.0.tgz", + "integrity": "sha512-EAbwcA3xv4zZWX8EmcKzWlWON1hf/IxJsMAdApRqObhoarpBQO28DoHAxZW7HQPP/T9S1YrLHONjGxwUzippQQ==", + "dependencies": { + "@nut-tree/libnut-darwin": "2.3.0", + "@nut-tree/libnut-linux": "2.3.0", + "@nut-tree/libnut-win32": "2.3.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-darwin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.3.0.tgz", + "integrity": "sha512-hbNW0WN5Olrrcl59sNXCdJCHmaclwk5G/FMQcP8NoTNWkSv2L+zxXZ5dNt13DErCv9HCvMrof20nBz82LArNXg==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-darwin/node_modules/node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + }, + "node_modules/@nut-tree/libnut-linux": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.3.0.tgz", + "integrity": "sha512-Hc2GsW4/BNYViqqaaaQCytj2C4NWNCJGGhCbznjyqI2cAHU3y5Hx+Frlkcnohfo+ofyOZOlPDQSxtP+E4tmVOw==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-linux/node_modules/node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + }, + "node_modules/@nut-tree/libnut-win32": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.3.0.tgz", + "integrity": "sha512-2v9fBVekJn9ktyI2IWmYlLzNqGBdkaSscfqKmT7Kdzshh6nbsqeawRmhFc4IgTOJBSruz7oc6AWAWsRk9OL3FQ==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-win32/node_modules/node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + }, + "node_modules/@nut-tree/nut-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-2.3.0.tgz", + "integrity": "sha512-QOQeuwlB1e+Ctj7h0lcIzxeWs1tR8DACxCURDsS/TxsYP0SqNBsc+ov4GjwJGOI80WOe00gXahnqVPie4qjfSg==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "linux", + "darwin", + "win32" + ], + "dependencies": { + "@nut-tree/libnut": "2.3.0", + "clipboardy": "2.3.0", + "jimp": "0.16.2", + "node-abort-controller": "2.0.0" + } + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", "dev": true, "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=8.0.0", + "npm": ">=5.0.0" } }, - "node_modules/builder-util/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/@openapitools/openapi-generator-cli": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", + "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nestjs/common": "8.4.4", + "@nestjs/core": "8.4.4", + "@nuxtjs/opencollective": "0.3.2", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.3", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.0.1", + "glob": "7.1.6", + "inquirer": "8.2.2", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.5.5", + "tslib": "2.0.3" + }, + "bin": { + "openapi-generator-cli": "main.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openapi_generator" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -4497,7 +4575,27 @@ "node": ">=12" } }, - "node_modules/builder-util/node_modules/jsonfile": { + "node_modules/@openapitools/openapi-generator-cli/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", @@ -4509,7 +4607,13 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/builder-util/node_modules/universalify": { + "node_modules/@openapitools/openapi-generator-cli/node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", @@ -4518,701 +4622,655 @@ "node": ">= 10.0.0" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "node_modules/@peculiar/asn1-schema": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.3.tgz", + "integrity": "sha512-6GptMYDMyWBHTUKndHaDsRZUO/XMSgIns2krxcm2L7SEExRHwawFvSwNBhqNPR9HJwv3MruAiF1bhN0we6j6GQ==", "dev": true, "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/@peculiar/webcrypto": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.1.tgz", + "integrity": "sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==", "dev": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.0", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.1", + "webcrypto-core": "^1.7.4" + }, "engines": { - "node": ">=8" + "node": ">=10.12.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@peculiar/webcrypto/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/unts" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" + "node_modules/@react-hook/debounce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@react-hook/debounce/-/debounce-3.0.0.tgz", + "integrity": "sha512-ir/kPrSfAzY12Gre0sOHkZ2rkEmM4fS5M5zFxCi4BnCeXh2nvx9Ujd+U4IGpKCuPA+EQD0pg1eK2NGLvfWejag==", + "dependencies": { + "@react-hook/latest": "^1.0.2" + }, + "peerDependencies": { + "react": ">=16.8" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001426", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz", - "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] + "node_modules/@react-hook/event": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@react-hook/event/-/event-1.2.6.tgz", + "integrity": "sha512-JUL5IluaOdn5w5Afpe/puPa1rj8X6udMlQ9dt4hvMuKmTrBS1Ya6sb4sVgvfe2eU4yDuOfAhik8xhbcCekbg9Q==", + "peerDependencies": { + "react": ">=16.8" + } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + "node_modules/@react-hook/latest": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz", + "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==", + "peerDependencies": { + "react": ">=16.8" + } }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "node_modules/@react-hook/throttle": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-hook/throttle/-/throttle-2.2.0.tgz", + "integrity": "sha512-LJ5eg+yMV8lXtqK3lR+OtOZ2WH/EfWvuiEEu0M3bhR7dZRfTyEJKxH1oK9uyBxiXPtWXiQggWbZirMCXam51tg==", "dependencies": { - "traverse": ">=0.3.0 <0.4" + "@react-hook/latest": "^1.0.2" }, - "engines": { - "node": "*" + "peerDependencies": { + "react": ">=16.8" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@react-hook/window-size": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@react-hook/window-size/-/window-size-3.1.1.tgz", + "integrity": "sha512-yWnVS5LKnOUIrEsI44oz3bIIUYqflamPL27n+k/PC//PsX/YeWBky09oPeAoc9As6jSH16Wgo8plI+ECZaHk3g==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@react-hook/debounce": "^3.0.0", + "@react-hook/event": "^1.2.1", + "@react-hook/throttle": "^2.2.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "react": ">=16.8" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "node_modules/@repeaterjs/repeater": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", + "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==", "dev": true }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=6" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@smartpointer-desktop/eslintrc": { + "resolved": "packages/eslintrc", + "link": true + }, + "node_modules/@smartpointer-desktop/main": { + "resolved": "packages/main", + "link": true + }, + "node_modules/@smartpointer-desktop/preload": { + "resolved": "packages/preload", + "link": true + }, + "node_modules/@smartpointer-desktop/renderer": { + "resolved": "packages/renderer", + "link": true + }, + "node_modules/@smartpointer-desktop/shared": { + "resolved": "packages/shared", + "link": true + }, + "node_modules/@smartpointer-desktop/tsconfig": { + "resolved": "packages/tsconfig", + "link": true + }, + "node_modules/@stomp/stompjs": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", + "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "defer-to-connect": "^1.0.1" }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/chownr": { + "node_modules/@tootallnate/once": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 10" } }, - "node_modules/chromium-pickle-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true }, - "node_modules/ci-info": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "node_modules/@tsconfig/node16-strictest-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16-strictest-esm/-/node16-strictest-esm-1.0.3.tgz", + "integrity": "sha512-0/QTPDkKmE2dy0dMRstPCv4VJ+gUGgvMKzaWd5P3hgdlmPqYqe1pJxDGUlNYbSgUBlncIvvX+mIeZarokysNgg==", + "dev": true + }, + "node_modules/@tsconfig/strictest": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-1.0.2.tgz", + "integrity": "sha512-IRKlC8cnP7zMz1SDBjyIVyPapkEGWLZ6wkF6Z8T+xU80P9sO5uGXlIUvtzjx+7ehPJRWxkB6CeIDwUfyqNtYkQ==" + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", "dev": true, - "optional": true, "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/ms": "*" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", "dependencies": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" + "@types/node": "*" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, + "optional": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" - } + "node_modules/@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "dev": true }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/json-stable-stringify": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz", + "integrity": "sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", "dev": true, "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/node": "*" } }, - "node_modules/cmake-js": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.1.0.tgz", - "integrity": "sha512-utmukLQftpgrCpGRCaHnkv4K27HZNNFqmBl4vnvccy0xp4c1erxjFU/Lq4wn5ngAhFZmpwBPQfoKWKThjSBiwg==", + "node_modules/@types/lodash": { + "version": "4.14.186", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz", + "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==" + }, + "node_modules/@types/lodash.mergewith": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz", + "integrity": "sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==", "dependencies": { - "debug": "^4", - "fs-extra": "^5.0.0", - "is-iojs": "^1.0.1", - "lodash": "^4", - "memory-stream": "0", - "npmlog": "^1.2.0", - "rc": "^1.2.7", - "request": "^2.54.0", - "semver": "^5.0.3", - "splitargs": "0", - "tar": "^4", - "unzipper": "^0.8.13", - "url-join": "0", - "which": "^1.0.9", - "yargs": "^3.6.0" - }, - "bin": { - "cmake-js": "bin/cmake-js" - }, - "engines": { - "node": ">= 10.0.0" + "@types/lodash": "*" } }, - "node_modules/cmake-js/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "optional": true }, - "node_modules/cmake-js/node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true }, - "node_modules/cmake-js/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "node_modules/@types/node": { + "version": "18.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", + "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", + "dev": true }, - "node_modules/cmake-js/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, - "node_modules/cmake-js/node_modules/fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "node_modules/@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@types/node": "*", + "xmlbuilder": ">=11.0.1" } }, - "node_modules/cmake-js/node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "devOptional": true + }, + "node_modules/@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "dev": true, "dependencies": { - "minipass": "^2.6.0" + "@types/node": "*" } }, - "node_modules/cmake-js/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "node_modules/@types/react": { + "version": "18.0.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz", + "integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==", + "devOptional": true, "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "node_modules/cmake-js/node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "node_modules/@types/react-dom": { + "version": "18.0.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.8.tgz", + "integrity": "sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==", + "dev": true, "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "@types/react": "*" } }, - "node_modules/cmake-js/node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "devOptional": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/verror": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", + "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, "dependencies": { - "minipass": "^2.9.0" + "@types/node": "*" } }, - "node_modules/cmake-js/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/@types/yargs": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", + "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", + "dev": true, "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "@types/yargs-parser": "*" } }, - "node_modules/cmake-js/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true }, - "node_modules/cmake-js/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*" } }, - "node_modules/cmake-js/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz", + "integrity": "sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==", + "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/type-utils": "5.41.0", + "@typescript-eslint/utils": "5.41.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cmake-js/node_modules/tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "dependencies": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=4.5" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/cmake-js/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, "dependencies": { - "isexe": "^2.0.0" + "lru-cache": "^6.0.0" }, "bin": { - "which": "bin/which" - } - }, - "node_modules/cmake-js/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/cmake-js/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" - }, - "node_modules/cmake-js/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/cmake-js/node_modules/yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg==", + "node_modules/@typescript-eslint/parser": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.41.0.tgz", + "integrity": "sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==", + "dev": true, "dependencies": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", + "debug": "^4.3.4" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.41.0.tgz", + "integrity": "sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0" }, "engines": { - "node": ">=7.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.41.0.tgz", + "integrity": "sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==", "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "delayed-stream": "~1.0.0" + "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/utils": "5.41.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/compare-version": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/compare-versions": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", - "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", - "dev": true - }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", - "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concurrently": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", - "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "bin": { - "concurrently": "bin/concurrently.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/concurrently/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/concurrently/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "node_modules/@typescript-eslint/types": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.41.0.tgz", + "integrity": "sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==", "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, "engines": { - "npm": ">=2.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.41.0.tgz", + "integrity": "sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/concurrently/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/concurrently/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/concurrently/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/@typescript-eslint/utils": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.41.0.tgz", + "integrity": "sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==", "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", "dependencies": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/conf/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/conf/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "node_modules/conf/node_modules/semver": { + "node_modules/@typescript-eslint/utils/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -5223,427 +5281,318 @@ "node": ">=10" } }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "optional": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "node_modules/console.table": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", - "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.41.0.tgz", + "integrity": "sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==", "dev": true, "dependencies": { - "easy-table": "1.1.0" + "@typescript-eslint/types": "5.41.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "> 0.10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/copy-to-clipboard": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", - "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "node_modules/@vitejs/plugin-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", + "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "dev": true, "dependencies": { - "toggle-selection": "^1.0.6" + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-jsx": "^7.19.0", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.26.7", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^3.0.0" } }, - "node_modules/core-js-pure": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", - "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", + "node_modules/@whatwg-node/fetch": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.3.2.tgz", + "integrity": "sha512-Bs5zAWQs0tXsLa4mRmLw7Psps1EN78vPtgcLpw3qPY8s6UYPUM67zFZ9cy+7tZ64PXhfwzxJn+m7RH2Lq48RNQ==", "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "dependencies": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "event-target-polyfill": "^0.0.3", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.8.0", + "web-streams-polyfill": "^3.2.0" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "node_modules/@zag-js/element-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz", + "integrity": "sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==" }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "node_modules/@zag-js/focus-visible": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz", + "integrity": "sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==" + }, + "node_modules/7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=6.5" } }, - "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/cosmiconfig/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, - "optional": true, - "dependencies": { - "buffer": "^5.1.0" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" + "debug": "4" }, "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" + "node": ">= 6.0.0" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/css-box-model": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", - "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { - "tiny-invariant": "^1.0.6" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dependencies": { - "assert-plus": "^1.0.0" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=0.10" + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "dev": true, - "engines": { - "node": ">=0.11" + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "dependencies": { - "mimic-fn": "^3.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/debounce-fn/node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, - "optional": true - }, - "node_modules/detect-node-es": { + "node_modules/any-base": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dijkstrajs": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", - "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" - }, - "node_modules/dir-compare": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", - "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", - "dev": true, - "dependencies": { - "buffer-equal": "1.0.0", - "colors": "1.0.3", - "commander": "2.9.0", - "minimatch": "3.0.4" - }, - "bin": { - "dircompare": "src/cli/dircompare.js" - } - }, - "node_modules/dir-compare/node_modules/commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", - "dev": true, - "dependencies": { - "graceful-readlink": ">= 1.0.0" - }, - "engines": { - "node": ">= 0.6.x" - } - }, - "node_modules/dir-compare/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dependencies": { - "path-type": "^4.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/dir-glob/node_modules/path-type": { + "node_modules/app-builder-bin": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true }, - "node_modules/dmg-builder": { + "node_modules/app-builder-lib": { "version": "23.6.0", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", - "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", + "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", "dev": true, "dependencies": { - "app-builder-lib": "23.6.0", + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.2.1", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", "builder-util": "23.6.0", "builder-util-runtime": "9.1.1", - "fs-extra": "^10.0.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.7", + "electron-osx-sign": "^0.6.0", + "electron-publish": "23.6.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.10", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.1.2", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.7", + "tar": "^6.1.11", + "temp-file": "^3.4.0" }, - "optionalDependencies": { - "dmg-license": "^1.0.11" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/dmg-builder/node_modules/fs-extra": { + "node_modules/app-builder-lib/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", @@ -5657,7 +5606,7 @@ "node": ">=12" } }, - "node_modules/dmg-builder/node_modules/jsonfile": { + "node_modules/app-builder-lib/node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", @@ -5669,7 +5618,22 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/dmg-builder/node_modules/universalify": { + "node_modules/app-builder-lib/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", @@ -5678,92 +5642,40 @@ "node": ">= 10.0.0" } }, - "node_modules/dmg-license": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", - "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "@types/plist": "^3.0.1", - "@types/verror": "^1.10.3", - "ajv": "^6.10.0", - "crc": "^3.8.0", - "iconv-corefoundation": "^1.1.7", - "plist": "^3.0.4", - "smart-buffer": "^4.0.2", - "verror": "^1.10.0" - }, - "bin": { - "dmg-license": "bin/dmg-license.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dotenv": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", - "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "node_modules/are-we-there-yet": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", + "integrity": "sha512-Zfw6bteqM9gQXZ1BIWOgM8xEwMrUGoyL8nW13+O+OOgNX3YhuDN1GDgg1NzdTlmm3j+9sHy7uBZ12r+z9lXnZQ==", "dependencies": { - "readable-stream": "^2.0.2" + "delegates": "^1.0.0", + "readable-stream": "^2.0.0 || ^1.1.13" } }, - "node_modules/duplexer2/node_modules/isarray": { + "node_modules/are-we-there-yet/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "node_modules/duplexer2/node_modules/readable-stream": { + "node_modules/are-we-there-yet/node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", @@ -5777,12 +5689,12 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/duplexer2/node_modules/safe-buffer": { + "node_modules/are-we-there-yet/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/duplexer2/node_modules/string_decoder": { + "node_modules/are-we-there-yet/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", @@ -5790,2017 +5702,1846 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "node_modules/easy-table": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", - "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", - "dev": true, - "optionalDependencies": { - "wcwidth": ">=1.0.1" - } + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "node_modules/aria-hidden": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz", + "integrity": "sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==", "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.9.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" } }, - "node_modules/electron": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-21.2.0.tgz", - "integrity": "sha512-oKV4fo8l6jlOZ1cYZ4RpZz02ZxLuBo3SO7DH+FrJ8uDyCirP+eVJ/qlzu23odtNe0P7S/mYAZbC6abZHWoqtLg==", + "node_modules/array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "dev": true, - "hasInstallScript": true, "dependencies": { - "@electron/get": "^1.14.1", - "@types/node": "^16.11.26", - "extract-zip": "^2.0.1" - }, - "bin": { - "electron": "cli.js" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" }, "engines": { - "node": ">= 10.17.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/electron-builder": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", - "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "@types/yargs": "^17.0.1", - "app-builder-lib": "23.6.0", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "chalk": "^4.1.1", - "dmg-builder": "23.6.0", - "fs-extra": "^10.0.0", - "is-ci": "^3.0.0", - "lazy-val": "^1.0.5", - "read-config-file": "6.2.0", - "simple-update-notifier": "^1.0.7", - "yargs": "^17.5.1" - }, - "bin": { - "electron-builder": "cli.js", - "install-app-deps": "install-app-deps.js" - }, "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/electron-builder/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/electron-builder/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/electron-builder/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/electron-osx-sign": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", - "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", - "deprecated": "Please use @electron/osx-sign moving forward. Be aware the API is slightly different", + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/asar": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", + "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change", "dev": true, "dependencies": { - "bluebird": "^3.5.0", - "compare-version": "^0.1.2", - "debug": "^2.6.8", - "isbinaryfile": "^3.0.2", - "minimist": "^1.2.0", - "plist": "^3.0.1" + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" }, "bin": { - "electron-osx-flat": "bin/electron-osx-flat.js", - "electron-osx-sign": "bin/electron-osx-sign.js" + "asar": "bin/asar.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=10.12.0" + }, + "optionalDependencies": { + "@types/glob": "^7.1.1" } }, - "node_modules/electron-osx-sign/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dependencies": { - "ms": "2.0.0" + "safer-buffer": "~2.1.0" } }, - "node_modules/electron-osx-sign/node_modules/isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", "dev": true, "dependencies": { - "buffer-alloc": "^1.2.0" + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" }, "engines": { - "node": ">=0.6.0" + "node": ">=12.0.0" } }, - "node_modules/electron-osx-sign/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, - "node_modules/electron-publish": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", - "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "dependencies": { - "@types/fs-extra": "^9.0.11", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "chalk": "^4.1.1", - "fs-extra": "^10.0.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" + "engines": { + "node": ">=8" } }, - "node_modules/electron-publish/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=12" + "node": ">=0.12.0" } }, - "node_modules/electron-publish/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/electron-publish/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, + "node_modules/atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", "engines": { - "node": ">= 10.0.0" + "node": ">=10.12.0" } }, - "node_modules/electron-store": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.1.0.tgz", - "integrity": "sha512-2clHg/juMjOH0GT9cQ6qtmIvK183B39ZXR0bUoPwKwYHJsEF3quqyDzMFUAu+0OP8ijmN2CbPRAelhNbWUbzwA==", - "dependencies": { - "conf": "^10.2.0", - "type-fest": "^2.17.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "engines": { + "node": ">=4" } }, - "node_modules/electron-store/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", + "dev": true, "engines": { - "node": ">=12.20" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - }, - "node_modules/electron/node_modules/@types/node": { - "version": "16.18.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.2.tgz", - "integrity": "sha512-KIGQJyya+opDCFvDSZMNNS899ov5jlNdtN7PypgHWeb8e+5vWISdwTRo/ClsNVlmDihzOGqFyNBDamUs7TQQCA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/axe-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.0.tgz", + "integrity": "sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==", "dev": true, - "optional": true, "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/axios": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", + "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", "dependencies": { - "once": "^1.4.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=10", + "npm": ">=6" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "engines": { - "node": ">=6" - } + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "dev": true }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dev": true, + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dependencies": { - "is-arrayish": "^0.2.1" + "tweetnacl": "^0.14.3" } }, - "node_modules/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dependencies": { - "has": "^1.0.3" + "file-uri-to-path": "1.0.0" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, - "optional": true - }, - "node_modules/esbuild": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz", - "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==", - "devOptional": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.12", - "@esbuild/linux-loong64": "0.15.12", - "esbuild-android-64": "0.15.12", - "esbuild-android-arm64": "0.15.12", - "esbuild-darwin-64": "0.15.12", - "esbuild-darwin-arm64": "0.15.12", - "esbuild-freebsd-64": "0.15.12", - "esbuild-freebsd-arm64": "0.15.12", - "esbuild-linux-32": "0.15.12", - "esbuild-linux-64": "0.15.12", - "esbuild-linux-arm": "0.15.12", - "esbuild-linux-arm64": "0.15.12", - "esbuild-linux-mips64le": "0.15.12", - "esbuild-linux-ppc64le": "0.15.12", - "esbuild-linux-riscv64": "0.15.12", - "esbuild-linux-s390x": "0.15.12", - "esbuild-netbsd-64": "0.15.12", - "esbuild-openbsd-64": "0.15.12", - "esbuild-sunos-64": "0.15.12", - "esbuild-windows-32": "0.15.12", - "esbuild-windows-64": "0.15.12", - "esbuild-windows-arm64": "0.15.12" + "node": ">= 6" } }, - "node_modules/esbuild-android-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz", - "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==", - "cpu": [ - "x64" - ], + "node_modules/bl/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz", - "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==", - "cpu": [ - "arm64" - ], + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "dependencies": { + "bluebird": "^3.5.5" } }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz", - "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==", - "cpu": [ - "x64" - ], + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "optional": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz", - "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz", - "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">=12" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz", - "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==", - "cpu": [ - "arm64" - ], + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "node-int64": "^0.4.0" } }, - "node_modules/esbuild-linux-32": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz", - "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], - "engines": { - "node": ">=12" + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/esbuild-linux-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz", - "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==", - "cpu": [ - "x64" - ], + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz", - "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz", - "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==", - "cpu": [ - "arm64" - ], + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz", - "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==", - "cpu": [ - "mips64el" - ], + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz", - "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz", - "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz", - "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", "engines": { - "node": ">=12" + "node": ">=0.10" } }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz", - "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g==" + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", "engines": { - "node": ">=12" + "node": ">=0.2.0" } }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz", - "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==", - "cpu": [ - "x64" - ], + "node_modules/builder-util": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", + "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" } }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz", - "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==", - "cpu": [ - "x64" - ], + "node_modules/builder-util-runtime": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", + "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, "engines": { - "node": ">=12" + "node": ">=12.0.0" } }, - "node_modules/esbuild-windows-32": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz", - "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==", - "cpu": [ - "ia32" - ], + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { "node": ">=12" } }, - "node_modules/esbuild-windows-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz", - "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==", - "cpu": [ - "x64" - ], + "node_modules/builder-util/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/builder-util/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" } }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz", - "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==", - "cpu": [ - "arm64" - ], + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "streamsearch": "^1.1.0" + }, "engines": { - "node": ">=12" + "node": ">=10.16.0" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/eslint": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", - "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "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.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", - "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.10.0", - "get-tsconfig": "^4.2.0", - "globby": "^13.1.2", - "is-core-module": "^2.10.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.4" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } + "node_modules/caniuse-lite": { + "version": "1.0.30001426", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz", + "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, - "node_modules/eslint-import-resolver-typescript/node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "dev": true, "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" } }, - "node_modules/eslint-import-resolver-typescript/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dependencies": { + "traverse": ">=0.3.0 <0.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "*" } }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "debug": "^3.2.7" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" } }, - "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=4" + "node": ">= 8.10.0" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { - "ms": "2.0.0" + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", "dev": true }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "node_modules/ci-info": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", + "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", - "minimatch": "^3.1.2", - "semver": "^6.3.0" - }, "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">=6" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/eslint-plugin-react": { - "version": "7.31.10", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", - "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "dependencies": { - "array-includes": "^3.1.5", - "array.prototype.flatmap": "^1.3.0", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.1", - "object.values": "^1.1.5", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.7" + "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">=8" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=6" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { + "node_modules/cli-truncate": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 10" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": ">=8" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=0.8" } }, - "node_modules/espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "dev": true, "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "mimic-response": "^1.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, + "node_modules/cmake-js": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.1.0.tgz", + "integrity": "sha512-utmukLQftpgrCpGRCaHnkv4K27HZNNFqmBl4vnvccy0xp4c1erxjFU/Lq4wn5ngAhFZmpwBPQfoKWKThjSBiwg==", "dependencies": { - "estraverse": "^5.1.0" + "debug": "^4", + "fs-extra": "^5.0.0", + "is-iojs": "^1.0.1", + "lodash": "^4", + "memory-stream": "0", + "npmlog": "^1.2.0", + "rc": "^1.2.7", + "request": "^2.54.0", + "semver": "^5.0.3", + "splitargs": "0", + "tar": "^4", + "unzipper": "^0.8.13", + "url-join": "0", + "which": "^1.0.9", + "yargs": "^3.6.0" }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" + "bin": { + "cmake-js": "bin/cmake-js" }, "engines": { - "node": ">=4.0" + "node": ">= 10.0.0" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, + "node_modules/cmake-js/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, + "node_modules/cmake-js/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } + "node_modules/cmake-js/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/cmake-js/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/cmake-js/node_modules/fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "node_modules/execa/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" + "node_modules/cmake-js/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" } }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/cmake-js/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dependencies": { - "shebang-regex": "^1.0.0" + "number-is-nan": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" + "node_modules/cmake-js/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/cmake-js/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", "dependencies": { - "isexe": "^2.0.0" + "minipass": "^2.9.0" + } + }, + "node_modules/cmake-js/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" }, "bin": { - "which": "bin/which" + "mkdirp": "bin/cmd.js" } }, - "node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "node_modules/cmake-js/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, + "node_modules/cmake-js/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, + "node_modules/cmake-js/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "ansi-regex": "^2.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, + "node_modules/cmake-js/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", "dependencies": { - "os-tmpdir": "~1.0.2" + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=4.5" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, + "node_modules/cmake-js/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" + "isexe": "^2.0.0" }, "bin": { - "extract-zip": "cli.js" + "which": "bin/which" + } + }, + "node_modules/cmake-js/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "node": ">=0.10.0" } }, - "node_modules/extsprintf": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", - "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "optional": true + "node_modules/cmake-js/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "node_modules/cmake-js/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, + "node_modules/cmake-js/node_modules/yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg==", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "engines": { - "node": ">=8.6.0" + "node": ">=0.10.0" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "is-glob": "^4.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "reusify": "^1.0.4" + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, - "dependencies": { - "pend": "~1.2.0" + "engines": { + "node": ">= 6" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0.0" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/compare-versions": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", + "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "dev": true + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", + "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-selector": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", - "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", - "dependencies": { - "tslib": "^2.4.0" + "bin": { + "concurrently": "bin/concurrently.js" }, "engines": { - "node": ">= 12" - } - }, - "node_modules/file-type": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", - "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", - "engines": { - "node": ">=6" + "node": ">=10.0.0" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "node_modules/concurrently/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "minimatch": "^5.0.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/concurrently/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conf": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, + "node_modules/conf/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "node_modules/conf/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "node_modules/focus-lock": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.3.tgz", - "integrity": "sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg==", + "node_modules/conf/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dependencies": { - "tslib": "^2.0.3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "optional": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "easy-table": "1.1.0" }, "engines": { - "node": ">= 6" + "node": "> 0.10" } }, - "node_modules/framer-motion": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.6.2.tgz", - "integrity": "sha512-YRr+KaC+1MlLx7iArVyjZRpc0QXI7H0XIOJrdol+dF1+WLQJwS2sP04KGq808BG+byD36UAmAt4YqObE5YFLtw==", - "dependencies": { - "@motionone/dom": "10.13.1", - "framesync": "6.1.2", - "hey-listen": "^1.0.8", - "popmotion": "11.0.5", - "style-value-types": "5.1.2", - "tslib": "2.4.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, - "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "optional": true, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, "dependencies": { - "@emotion/memoize": "0.7.4" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" } }, - "node_modules/framer-motion/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "optional": true + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, - "node_modules/framer-motion/node_modules/framesync": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", - "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "node_modules/copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", "dependencies": { - "tslib": "2.4.0" + "toggle-selection": "^1.0.6" } }, - "node_modules/framesync": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", - "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", - "dependencies": { - "tslib": "^2.1.0" + "node_modules/core-js-pure": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", + "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=10" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/cosmiconfig-toml-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz", + "integrity": "sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==", "dev": true, "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "@iarna/toml": "^2.2.5" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/cosmiconfig-typescript-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.1.1.tgz", + "integrity": "sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg==", + "dev": true, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=3" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fstream/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/cosmiconfig/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" } }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "optional": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "buffer": "^5.1.0" } }, - "node_modules/function-bind": { + "node_modules/create-require": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "cross-spawn": "^7.0.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gauge": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", - "integrity": "sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA==", - "dependencies": { - "ansi": "^0.3.0", - "has-unicode": "^2.0.0", - "lodash.pad": "^4.1.0", - "lodash.padend": "^4.1.0", - "lodash.padstart": "^4.1.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "engines": { - "node": ">=6.9.0" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" } }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "tiny-invariant": "^1.0.6" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "assert-plus": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10" } }, - "node_modules/get-tsconfig": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", - "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", + "node_modules/dataloader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz", + "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", + "dev": true + }, + "node_modules/date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", "dev": true, + "engines": { + "node": ">=0.11" + }, "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" + "type": "opencollective", + "url": "https://opencollective.com/date-fns" } }, - "node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "mimic-fn": "^3.0.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, + "node_modules/debounce-fn/node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "dev": true, - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "engines": { - "node": ">=10.0" + "node": ">=0.10.0" } }, - "node_modules/global-agent/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dev": true, - "optional": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "mimic-response": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/global-tunnel-ng": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", - "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", - "dev": true, - "optional": true, - "dependencies": { - "encodeurl": "^1.0.2", - "lodash": "^4.17.10", - "npm-conf": "^1.1.3", - "tunnel": "^0.0.6" - }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "engines": { - "node": ">=0.10" + "node": ">=4.0.0" } }, - "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" + "clone": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, - "optional": true, "dependencies": { - "define-properties": "^1.1.3" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -7809,687 +7550,654 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6.0" } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, "engines": { - "node": ">=8.6" + "node": ">=8" } }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } + "optional": true }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, - "node_modules/graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", - "dev": true + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true + "node_modules/dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" + "node_modules/dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "dependencies": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "bin": { + "dircompare": "src/cli/dircompare.js" } }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", + "node_modules/dir-compare/node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "graceful-readlink": ">= 1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.6.x" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4.0" + "node": "*" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/has-flag": { + "node_modules/dir-glob/node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/dmg-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", + "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "dmg-license": "^1.0.11" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/dmg-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "engines": { - "node": ">= 0.4" + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/dmg-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "node_modules/hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" + "node_modules/dmg-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", "dev": true, + "optional": true, + "os": [ + "darwin" + ], "dependencies": { - "lru-cache": "^6.0.0" + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 6" + "node": ">=6.0.0" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/iconv-corefoundation": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", - "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dependencies": { - "cli-truncate": "^2.1.0", - "node-addon-api": "^1.6.3" + "is-obj": "^2.0.0" }, "engines": { - "node": "^8.11.2 || >=10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/dset": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz", + "integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==", "dev": true, "engines": { - "node": ">= 4" + "node": ">=4" } }, - "node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dependencies": { - "@types/node": "16.9.1" + "readable-stream": "^2.0.2" } }, - "node_modules/image-q/node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "node_modules/easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", "dev": true, - "engines": { - "node": ">=0.8.19" + "optionalDependencies": { + "wcwidth": ">=1.0.1" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } }, - "node_modules/inquirer": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", - "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "node_modules/electron": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-21.2.0.tgz", + "integrity": "sha512-oKV4fo8l6jlOZ1cYZ4RpZz02ZxLuBo3SO7DH+FrJ8uDyCirP+eVJ/qlzu23odtNe0P7S/mYAZbC6abZHWoqtLg==", "dev": true, + "hasInstallScript": true, "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "@electron/get": "^1.14.1", + "@types/node": "^16.11.26", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.17.0" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/electron-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", + "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "@types/yargs": "^17.0.1", + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "dmg-builder": "23.6.0", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "simple-update-notifier": "^1.0.7", + "yargs": "^17.5.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/electron-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/electron-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 10.0.0" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "node_modules/electron-osx-sign": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", + "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", + "deprecated": "Please use @electron/osx-sign moving forward. Be aware the API is slightly different", "dev": true, "dependencies": { - "ci-info": "^3.2.0" + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" }, "bin": { - "is-ci": "bin.js" + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=4.0.0" } }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "node_modules/electron-osx-sign/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "ms": "2.0.0" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/electron-osx-sign/node_modules/isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "buffer-alloc": "^1.2.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.6.0" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/electron-osx-sign/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" + "node_modules/electron-publish": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", + "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/electron-publish/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/electron-publish/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 10.0.0" } }, - "node_modules/is-iojs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", - "integrity": "sha512-tLn1j3wYSL6DkvEI+V/j0pKohpa5jk+ER74v6S4SgCXnjS0WA+DoZbwZBrrhgwksMvtuwndyGeG5F8YMsoBzSA==" - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" + "node_modules/electron-store": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.1.0.tgz", + "integrity": "sha512-2clHg/juMjOH0GT9cQ6qtmIvK183B39ZXR0bUoPwKwYHJsEF3quqyDzMFUAu+0OP8ijmN2CbPRAelhNbWUbzwA==", + "dependencies": { + "conf": "^10.2.0", + "type-fest": "^2.17.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, + "node_modules/electron-store/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "engines": { - "node": ">= 0.4" + "node": ">=12.20" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "engines": { - "node": ">=8" - } + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/electron/node_modules/@types/node": { + "version": "16.18.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.2.tgz", + "integrity": "sha512-KIGQJyya+opDCFvDSZMNNS899ov5jlNdtN7PypgHWeb8e+5vWISdwTRo/ClsNVlmDihzOGqFyNBDamUs7TQQCA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "optional": true, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "once": "^1.4.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "node_modules/enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10.13.0" } }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "is-arrayish": "^0.2.1" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8498,439 +8206,408 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typedarray": { + "node_modules/es-shim-unscopables": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "has": "^1.0.3" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "node_modules/esbuild": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz", + "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==", + "devOptional": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.12", + "@esbuild/linux-loong64": "0.15.12", + "esbuild-android-64": "0.15.12", + "esbuild-android-arm64": "0.15.12", + "esbuild-darwin-64": "0.15.12", + "esbuild-darwin-arm64": "0.15.12", + "esbuild-freebsd-64": "0.15.12", + "esbuild-freebsd-arm64": "0.15.12", + "esbuild-linux-32": "0.15.12", + "esbuild-linux-64": "0.15.12", + "esbuild-linux-arm": "0.15.12", + "esbuild-linux-arm64": "0.15.12", + "esbuild-linux-mips64le": "0.15.12", + "esbuild-linux-ppc64le": "0.15.12", + "esbuild-linux-riscv64": "0.15.12", + "esbuild-linux-s390x": "0.15.12", + "esbuild-netbsd-64": "0.15.12", + "esbuild-openbsd-64": "0.15.12", + "esbuild-sunos-64": "0.15.12", + "esbuild-windows-32": "0.15.12", + "esbuild-windows-64": "0.15.12", + "esbuild-windows-arm64": "0.15.12" } }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "node_modules/esbuild-android-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz", + "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" + "node": ">=12" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "node_modules/esbuild-android-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz", + "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "node_modules/esbuild-darwin-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz", + "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/jimp": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.2.tgz", - "integrity": "sha512-UpItBk81a92f8oEyoGYbO3YK4QcM0hoIyuGHmShoF9Ov63P5Qo7Q/X2xsAgnODmSuDJFOtrPtJd5GSWW4LKdOQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.2", - "@jimp/plugins": "^0.16.2", - "@jimp/types": "^0.16.2", - "regenerator-runtime": "^0.13.3" + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz", + "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - }, - "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/esbuild-freebsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz", + "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz", + "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "bin": { - "json5": "lib/cli.js" - }, + "node_modules/esbuild-linux-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz", + "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node_modules/esbuild-linux-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz", + "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz", + "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.6.0" + "node": ">=12" } }, - "node_modules/jsprim/node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/jsprim/node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" + "node_modules/esbuild-linux-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz", + "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==", + "cpu": [ + "arm64" ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, - "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4.0" + "node": ">=12" } }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz", + "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "json-buffer": "3.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz", + "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "language-subtag-registry": "~0.3.2" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/lazy-val": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", - "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", - "dev": true - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dependencies": { - "invert-kv": "^1.0.0" - }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz", + "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/esbuild-linux-s390x": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz", + "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.8.0" + "node": ">=12" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" - }, - "node_modules/load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" + "node_modules/esbuild-netbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz", + "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/load-bmfont/node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "node_modules/esbuild-openbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz", + "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=0.4.0" + "node": ">=12" } }, - "node_modules/load-bmfont/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz", + "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "node_modules/esbuild-windows-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz", + "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/esbuild-windows-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz", + "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" - }, - "node_modules/lodash.pad": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", - "integrity": "sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==" - }, - "node_modules/lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==" + "node_modules/esbuild-windows-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz", + "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==" + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { "node": ">=10" }, @@ -8938,417 +8615,475 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "dev": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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.0", + "text-table": "^0.2.0" }, "bin": { - "loose-envify": "cli.js" + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, - "engines": { - "node": ">=0.10.0" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "debug": "^3.2.7", + "resolve": "^1.20.0" } }, - "node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" + "ms": "^2.1.1" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", + "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", "dev": true, - "optional": true, "dependencies": { - "escape-string-regexp": "^4.0.0" + "debug": "^4.3.4", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", + "is-glob": "^4.0.3", + "synckit": "^0.8.4" }, "engines": { - "node": ">=10" - } - }, - "node_modules/memory-stream": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", - "integrity": "sha512-q0D3m846qY6ZkIt+19ZemU5vH56lpOZZwoJc3AICARKh/menBuayQUjAGPrqtHQQMUYERSdOrej92J9kz7LgYA==", - "dependencies": { - "readable-stream": "~1.0.26-2" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" } }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "node_modules/eslint-import-resolver-typescript/node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, "engines": { - "node": ">= 0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/eslint-import-resolver-typescript/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "debug": "^3.2.7" }, "engines": { - "node": ">=8.6" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, "dependencies": { - "mime-db": "1.52.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, "engines": { - "node": ">=6" + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/eslint-plugin-react": { + "version": "7.31.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", + "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "esutils": "^2.0.2" }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">= 8" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { "node": ">=10" } }, - "node_modules/mlly": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.14.tgz", - "integrity": "sha512-DgRgNUSX9NIxxCxygX4Xeg9C7GX7OUx1wuQ8cXx9o9LE0e9wrH+OZ9fcnrlEedsC/rtqry3ZhUddC759XD/L0w==", + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, "dependencies": { "acorn": "^8.8.0", - "pathe": "^0.3.5", - "pkg-types": "^0.3.4", - "ufo": "^0.8.5" + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/natural-compare": { + "node_modules/esquery": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/node-abort-controller": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", - "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==" - }, - "node_modules/node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true, - "optional": true - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "dependencies": { - "whatwg-url": "^5.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=0.10" } }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "estraverse": "^5.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "optional": true, - "dependencies": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } + "node_modules/event-target-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz", + "integrity": "sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ==", + "dev": true }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=6" } }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/npm-run-all/node_modules/cross-spawn": { + "node_modules/execa/node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -9360,47 +9095,37 @@ "node": ">=4.8" } }, - "node_modules/npm-run-all/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/npm-run-all/node_modules/path-key": { + "node_modules/execa/node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, "engines": { "node": ">=4" } }, - "node_modules/npm-run-all/node_modules/semver": { + "node_modules/execa/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, "bin": { "semver": "bin/semver" } }, - "node_modules/npm-run-all/node_modules/shebang-command": { + "node_modules/execa/node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -9408,32 +9133,18 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-all/node_modules/shebang-regex": { + "node_modules/execa/node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/which": { + "node_modules/execa/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -9441,308 +9152,308 @@ "which": "bin/which" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" - } + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "node_modules/npmlog": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", - "integrity": "sha512-1J5KqSRvESP6XbjPaXt2H6qDzgizLTM7x0y1cXIjP2PpvdCqyNC7TO3cPRKsuYlElbi/DwkzRRdG2zpmE0IktQ==", + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, "dependencies": { - "ansi": "~0.3.0", - "are-we-there-yet": "~1.0.0", - "gauge": "~1.2.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, "engines": { - "node": ">= 6" + "node": ">=0.6.0" } }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "node_modules/extract-files": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", + "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==", "dev": true, + "engines": { + "node": "^12.20 || >= 14.13" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jaydenseric" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, "engines": { - "node": ">= 0.4" + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.6.0" } }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "is-glob": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">= 6" } }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "reusify": "^1.0.4" } }, - "node_modules/object.hasown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", - "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bser": "2.1.1" } }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "node_modules/fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" } }, - "node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "dev": true }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "dependencies": { - "wrappy": "1" + "pend": "~1.2.0" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">= 0.8.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "tslib": "^2.4.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 12" } }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dependencies": { - "lcid": "^1.0.0" - }, + "node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "minimatch": "^5.0.1" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "engines": { - "node": ">=4" + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/p-locate": { + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" @@ -9751,1064 +9462,910 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, "dependencies": { - "callsites": "^3.0.0" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=6" - } - }, - "node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" - }, - "node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" - }, - "node_modules/parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, + "node_modules/focus-lock": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.3.tgz", + "integrity": "sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg==", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "tslib": "^2.0.3" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=8" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", "dev": true }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", "dev": true, "dependencies": { - "pify": "^3.0.0" + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" }, "engines": { - "node": ">=4" + "node": ">= 12.20" } }, - "node_modules/pathe": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", - "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==" - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", "dev": true, "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "node_modules/framer-motion": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.6.2.tgz", + "integrity": "sha512-YRr+KaC+1MlLx7iArVyjZRpc0QXI7H0XIOJrdol+dF1+WLQJwS2sP04KGq808BG+byD36UAmAt4YqObE5YFLtw==", "dependencies": { - "pngjs": "^3.0.0" + "@motionone/dom": "10.13.1", + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "popmotion": "11.0.5", + "style-value-types": "5.1.2", + "tslib": "2.4.0" }, - "bin": { - "pixelmatch": "bin/pixelmatch" + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/pixelmatch/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" } }, - "node_modules/pkg-types": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz", - "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==", + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/framer-motion/node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^0.5.16", - "pathe": "^0.3.9" + "tslib": "2.4.0" } }, - "node_modules/pkg-types/node_modules/mlly": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz", - "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==", + "node_modules/framesync": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", + "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", "dependencies": { - "acorn": "^8.8.0", - "pathe": "^0.3.8", - "pkg-types": "^0.3.5", - "ufo": "^0.8.5" + "tslib": "^2.1.0" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, "dependencies": { - "find-up": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=6 <7 || >=8" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dependencies": { - "p-try": "^2.0.0" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.6" } }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/fstream/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "p-limit": "^2.0.0" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=6" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "engines": { - "node": ">=4" + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "node_modules/plist": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", - "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pngjs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", - "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", - "engines": { - "node": ">=10.13.0" + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/popmotion": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", - "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", - "dependencies": { - "framesync": "6.1.2", - "hey-listen": "^1.0.8", - "style-value-types": "5.1.2", - "tslib": "2.4.0" - } - }, - "node_modules/popmotion/node_modules/framesync": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", - "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "node_modules/gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA==", "dependencies": { - "tslib": "2.4.0" + "ansi": "^0.3.0", + "has-unicode": "^2.0.0", + "lodash.pad": "^4.1.0", + "lodash.padend": "^4.1.0", + "lodash.padstart": "^4.1.0" } }, - "node_modules/postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", - "devOptional": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=6.9.0" } }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "devOptional": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, - "engines": { - "node": ">= 0.8.0" + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "pump": "^3.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, "engines": { - "node": ">= 0.6.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/get-tsconfig": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", + "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", "dev": true, - "engines": { - "node": ">=0.4.0" + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "assert-plus": "^1.0.0" } }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true, - "optional": true - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "image-q": "^4.0.0", + "omggif": "^1.0.10" } }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/qrcode": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", - "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" + "is-glob": "^4.0.3" }, "engines": { "node": ">=10.13.0" } }, - "node_modules/qrcode/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "min-document": "^2.19.0", + "process": "^0.11.10" } }, - "node_modules/qrcode/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=10.0" } }, - "node_modules/qrcode/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/global-agent/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "optional": true, "dependencies": { - "p-locate": "^4.1.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/qrcode/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "dev": true, + "optional": true, "dependencies": { - "p-try": "^2.0.0" + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" }, "engines": { - "node": ">=6" + "node": ">=0.10" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/qrcode/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "optional": true, "dependencies": { - "p-limit": "^2.2.0" + "define-properties": "^1.1.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/qrcode/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/qrcode/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true }, - "node_modules/qrcode/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/qrcode/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "pump": "^3.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", "engines": { - "node": ">=0.6" + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/graphql-config": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-4.3.6.tgz", + "integrity": "sha512-i7mAPwc0LAZPnYu2bI8B6yXU5820Wy/ArvmOseDLZIu0OU1UTULEuexHo6ZcHXeT9NvGGaUPQZm8NV3z79YydA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "@graphql-tools/graphql-file-loader": "^7.3.7", + "@graphql-tools/json-file-loader": "^7.3.7", + "@graphql-tools/load": "^7.5.5", + "@graphql-tools/merge": "^8.2.6", + "@graphql-tools/url-loader": "^7.9.7", + "@graphql-tools/utils": "^8.6.5", + "cosmiconfig": "7.0.1", + "cosmiconfig-toml-loader": "1.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "minimatch": "4.2.1", + "string-env-interpolation": "1.0.1", + "ts-node": "^10.8.1", + "tslib": "^2.4.0" }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "engines": { - "node": ">=0.10.0" + "node": ">= 10.0.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "node_modules/graphql-config/node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/react-clientside-effect": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", - "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "node_modules/graphql-request": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.0.0.tgz", + "integrity": "sha512-SpVEnIo2J5k2+Zf76cUkdvIRaq5FMZvGQYnA4lUWYbc99m+fHh4CZYRRO/Ff4tCLQ613fzCm3SiDT64ubW5Gyw==", "dependencies": { - "@babel/runtime": "^7.12.13" + "@graphql-typed-document-node/core": "^3.1.1", + "cross-fetch": "^3.1.5", + "extract-files": "^9.0.0", + "form-data": "^3.0.0" }, "peerDependencies": { - "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + "graphql": "14 - 16" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "node_modules/graphql-request/node_modules/extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", + "engines": { + "node": "^10.17.0 || ^12.0.0 || >= 13.7.0" }, - "peerDependencies": { - "react": "^18.2.0" + "funding": { + "url": "https://github.com/sponsors/jaydenseric" } }, - "node_modules/react-dropzone": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", - "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "node_modules/graphql-request/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dependencies": { - "attr-accept": "^2.2.2", - "file-selector": "^0.6.0", - "prop-types": "^15.8.1" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "react": ">= 16.8 || 18.0.0" - } - }, - "node_modules/react-fast-compare": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", - "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - }, - "node_modules/react-focus-lock": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", - "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "focus-lock": "^0.11.2", - "prop-types": "^15.6.2", - "react-clientside-effect": "^1.2.6", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", "dependencies": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" + "tslib": "^2.1.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", - "dependencies": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" - }, + "node_modules/graphql-ws": { + "version": "5.11.2", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.11.2.tgz", + "integrity": "sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w==", "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "graphql": ">=0.11 <=16" } }, - "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "dependencies": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=4" } }, - "node_modules/read-config-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", - "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", - "dev": true, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dependencies": { - "dotenv": "^9.0.2", - "dotenv-expand": "^5.1.0", - "js-yaml": "^4.1.0", - "json5": "^2.2.0", - "lazy-val": "^1.0.4" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=6" } }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "function-bind": "^1.1.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4.0" } }, - "node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">=8.10.0" + "node": ">=8" } }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "node_modules/regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" + "get-intrinsic": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" + "capital-case": "^1.0.4", + "tslib": "^2.0.3" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "lru-cache": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "agent-base": "6", + "debug": "4" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">= 6" } }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "node_modules/iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", "dev": true, "optional": true, + "os": [ + "darwin" + ], "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "devOptional": true, - "bin": { - "rollup": "dist/bin/rollup" + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" }, "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": "^8.11.2 || >=10" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=0.10.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -10822,388 +10379,361 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } + ] }, - "node_modules/rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", "dependencies": { - "tslib": "^2.1.0" + "@types/node": "16.9.1" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "node_modules/import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", "dev": true, - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } + "engines": { + "node": ">=12.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true, - "optional": true + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inquirer": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", + "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", "dev": true, - "optional": true, "dependencies": { - "type-fest": "^0.13.1" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12.0.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/side-channel": { + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "has-bigints": "^1.0.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-update-notifier": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", - "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", - "dev": true, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { - "semver": "~7.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" } }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, - "optional": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ci-info": "^3.2.0" }, - "engines": { - "node": ">=8" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "devOptional": true, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/splitargs": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", - "integrity": "sha512-UUFYD2oWbNwULH6WoVtLUOw8ch586B+HUqcsAjjjeoBQAM1bD4wZRXu01koaxyd8UeYpybWqW4h+lO1Okv40Tg==" - }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true, - "optional": true + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/stat-mode": { + "node_modules/is-interactive": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", - "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "node_modules/is-iojs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", + "integrity": "sha512-tLn1j3wYSL6DkvEI+V/j0pKohpa5jk+ER74v6S4SgCXnjS0WA+DoZbwZBrrhgwksMvtuwndyGeG5F8YMsoBzSA==" }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", + "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "tslib": "^2.0.3" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.padend": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", - "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -11212,116 +10742,79 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "is-unc-path": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "engines": { "node": ">=0.10.0" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-value-types": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", - "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", - "dependencies": { - "hey-listen": "^1.0.8", - "tslib": "2.4.0" - } - }, - "node_modules/stylis": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", - "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" - }, - "node_modules/sumchecker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "dev": true, - "dependencies": { - "debug": "^4.1.0" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "has-tostringtag": "^1.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "engines": { "node": ">= 0.4" }, @@ -11329,2458 +10822,7276 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/synckit": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", - "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.4.0" + "has-symbols": "^1.0.2" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "unc-path-regex": "^0.1.2" }, "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/temp-file": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", - "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "async-exit-hook": "^2.0.1", - "fs-extra": "^10.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/temp-file/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "tslib": "^2.0.3" } }, - "node_modules/temp-file/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "call-bind": "^1.0.2" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/temp-file/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">=0.10.0" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, - "node_modules/tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, "engines": { - "node": "*" + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" } }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", "dev": true, "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" } }, - "node_modules/tmp-promise": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", - "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "dev": true, - "dependencies": { - "tmp": "^0.2.0" + "peerDependencies": { + "ws": "*" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, "dependencies": { - "is-number": "^7.0.0" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" }, "engines": { - "node": ">=8.0" + "node": ">=10" } }, - "node_modules/toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "node_modules/jimp": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.2.tgz", + "integrity": "sha512-UpItBk81a92f8oEyoGYbO3YK4QcM0hoIyuGHmShoF9Ov63P5Qo7Q/X2xsAgnODmSuDJFOtrPtJd5GSWW4LKdOQ==", "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.2", + "@jimp/plugins": "^0.16.2", + "@jimp/types": "^0.16.2", + "regenerator-runtime": "^0.13.3" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", "dev": true }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "engines": { - "node": "*" - } + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, "bin": { - "tree-kill": "cli.js" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dev": true, - "dependencies": { - "utf8-byte-length": "^1.0.1" - } + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "jsesc": "bin/jsesc" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "engines": { + "node": ">=4" } }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-schema-typed": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" + }, + "node_modules/json-stable-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", "dev": true, "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "jsonify": "^0.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tsconfig-paths/node_modules/json5": { + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json-to-pretty-yaml": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", + "integrity": "sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "remedial": "^1.0.7", + "remove-trailing-spaces": "^1.0.6" }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "bin": { "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "dev": true, "dependencies": { - "tslib": "^1.8.1" + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" }, "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" + "node": ">=4", + "npm": ">=1.4.28" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "optional": true, - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + "bin": { + "semver": "bin/semver" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dependencies": { - "safe-buffer": "^5.0.1" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" }, "engines": { - "node": "*" + "node": ">=0.6.0" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/jsprim/node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/jsprim/node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1" + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" }, "engines": { - "node": ">= 0.8.0" + "node": ">=4.0" } }, - "node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/ufo": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", - "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==" + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "dev": true + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dependencies": { + "invert-kv": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, "engines": { - "node": ">= 4.0.0" + "node": ">= 0.8.0" } }, - "node_modules/unplugin": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.9.5.tgz", - "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "node_modules/listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, "dependencies": { - "acorn": "^8.8.0", - "chokidar": "^3.5.3", - "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.4.4" + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" }, "peerDependencies": { - "esbuild": ">=0.13", - "rollup": "^2.50.0", - "vite": "^2.3.0 || ^3.0.0-0", - "webpack": "4 || 5" + "enquirer": ">= 2.3.0 < 3" }, "peerDependenciesMeta": { - "esbuild": { - "optional": true - }, - "rollup": { - "optional": true - }, - "vite": { - "optional": true - }, - "webpack": { + "enquirer": { "optional": true } } }, - "node_modules/unplugin-auto-expose": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/unplugin-auto-expose/-/unplugin-auto-expose-0.0.3.tgz", - "integrity": "sha512-UsZevvvS+N1/jSm+CDgMIdYP0ruB6rqIV16NnNfWh/UkStt+j7IxyfgkTEv2gKBFByE/TgAN43TUJZ1Lw8T9mQ==", + "node_modules/load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", "dependencies": { - "magic-string": "^0.26.3", - "mlly": "0.5.14", - "unplugin": "0.9.5" + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" } }, - "node_modules/unzipper": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", - "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "~1.0.10", - "listenercount": "~1.0.1", - "readable-stream": "~2.1.5", - "setimmediate": "~1.0.4" + "node_modules/load-bmfont/node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "engines": { + "node": ">=0.4.0" } }, - "node_modules/unzipper/node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" - }, - "node_modules/unzipper/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/unzipper/node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" + "node_modules/load-bmfont/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/unzipper/node_modules/readable-stream": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", - "integrity": "sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw==", + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, "dependencies": { - "buffer-shims": "^1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "p-locate": "^5.0.0" }, - "bin": { - "browserslist-lint": "cli.js" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "node_modules/lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==" + }, + "node_modules/lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==" + }, + "node_modules/lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, "dependencies": { - "punycode": "^2.1.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/url-join": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", - "integrity": "sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==" - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "dependencies": { - "prepend-http": "^2.0.0" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, "dependencies": { - "tslib": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { "node": ">=10" }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", + "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" }, "engines": { "node": ">=10" + } + }, + "node_modules/memory-stream": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", + "integrity": "sha512-q0D3m846qY6ZkIt+19ZemU5vH56lpOZZwoJc3AICARKh/menBuayQUjAGPrqtHQQMUYERSdOrej92J9kz7LgYA==", + "dependencies": { + "readable-stream": "~1.0.26-2" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/meros": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/meros/-/meros-1.2.1.tgz", + "integrity": "sha512-R2f/jxYqCAGI19KhAvaxSOxALBMkaXWH2a7rOyqQw+ZmizX5bKkEYWLzdhC+U82ZVVPVp6MCXe3EkVligh+12g==", + "dev": true, + "engines": { + "node": ">=13" }, "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/node": ">=13" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mlly": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.14.tgz", + "integrity": "sha512-DgRgNUSX9NIxxCxygX4Xeg9C7GX7OUx1wuQ8cXx9o9LE0e9wrH+OZ9fcnrlEedsC/rtqry3ZhUddC759XD/L0w==", + "dependencies": { + "acorn": "^8.8.0", + "pathe": "^0.3.5", + "pkg-types": "^0.3.4", + "ufo": "^0.8.5" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-abort-controller": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", + "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==" + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "optional": true + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "optional": true, + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", + "integrity": "sha512-1J5KqSRvESP6XbjPaXt2H6qDzgizLTM7x0y1cXIjP2PpvdCqyNC7TO3cPRKsuYlElbi/DwkzRRdG2zpmE0IktQ==", + "dependencies": { + "ansi": "~0.3.0", + "are-we-there-yet": "~1.0.0", + "gauge": "~1.2.0" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pathe": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", + "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pkg-types": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz", + "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==", + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^0.5.16", + "pathe": "^0.3.9" + } + }, + "node_modules/pkg-types/node_modules/mlly": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz", + "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==", + "dependencies": { + "acorn": "^8.8.0", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "ufo": "^0.8.5" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/plist": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", + "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", + "dev": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/popmotion": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", + "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", + "dependencies": { + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + } + }, + "node_modules/popmotion/node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "dependencies": { + "tslib": "2.4.0" + } + }, + "node_modules/postcss": { + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "devOptional": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, + "optional": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pvtsutils": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz", + "integrity": "sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-clientside-effect": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", + "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "dependencies": { + "@babel/runtime": "^7.12.13" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "node_modules/react-focus-lock": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", + "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.11.2", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.6", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/read-config-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + "dev": true, + "dependencies": { + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/relay-runtime": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", + "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.0.0", + "fbjs": "^3.0.0", + "invariant": "^2.2.4" + } + }, + "node_modules/remedial": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", + "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/remove-trailing-spaces": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz", + "integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==", + "dev": true + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "devOptional": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz", + "integrity": "sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "optional": true + }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==", + "dev": true + }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/splitargs": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", + "integrity": "sha512-UUFYD2oWbNwULH6WoVtLUOw8ch586B+HUqcsAjjjeoBQAM1bD4wZRXu01koaxyd8UeYpybWqW4h+lO1Okv40Tg==" + }, + "node_modules/sponge-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", + "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "node_modules/string-env-interpolation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", + "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-value-types": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", + "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", + "dependencies": { + "hey-listen": "^1.0.8", + "tslib": "2.4.0" + } + }, + "node_modules/stylis": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", + "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swap-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", + "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/synckit": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", + "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/temp-file/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/temp-file/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/temp-file/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "engines": { + "node": "*" + } + }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "engines": { + "node": "*" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/ts-log": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", + "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==", + "dev": true + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "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" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undici": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=12.18" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dev": true, + "dependencies": { + "normalize-path": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unixify/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unplugin": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.9.5.tgz", + "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==", + "dependencies": { + "acorn": "^8.8.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.4.4" + }, + "peerDependencies": { + "esbuild": ">=0.13", + "rollup": "^2.50.0", + "vite": "^2.3.0 || ^3.0.0-0", + "webpack": "4 || 5" + }, + "peerDependenciesMeta": { + "esbuild": { + "optional": true + }, + "rollup": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/unplugin-auto-expose": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/unplugin-auto-expose/-/unplugin-auto-expose-0.0.3.tgz", + "integrity": "sha512-UsZevvvS+N1/jSm+CDgMIdYP0ruB6rqIV16NnNfWh/UkStt+j7IxyfgkTEv2gKBFByE/TgAN43TUJZ1Lw8T9mQ==", + "dependencies": { + "magic-string": "^0.26.3", + "mlly": "0.5.14", + "unplugin": "0.9.5" + } + }, + "node_modules/unzipper": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", + "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "~1.0.10", + "listenercount": "~1.0.1", + "readable-stream": "~2.1.5", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "node_modules/unzipper/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/unzipper/node_modules/process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "integrity": "sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw==", + "dependencies": { + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==" + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + "dev": true + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-promise": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/vite": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.1.tgz", + "integrity": "sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==", + "devOptional": true, + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webcrypto-core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.5.tgz", + "integrity": "sha512-gaExY2/3EHQlRNNNVSrbG2Cg94Rutl7fAaKILS1w8ZDhGxdFOaw6EbCfHIxPy9vt/xwp5o0VQAx9aySPF6hU1A==", + "dev": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.1.6", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz", + "integrity": "sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg==" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, + "node_modules/window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", + "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", + "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslintrc": { + "name": "@smartpointer-desktop/eslintrc", + "version": "1.1.0-SNAPSHOT", + "devDependencies": { + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0", + "eslint": "8.26.0", + "eslint-config-prettier": "8.5.0", + "eslint-import-resolver-typescript": "3.5.2", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-react": "7.31.10", + "eslint-plugin-react-hooks": "4.6.0" + } + }, + "packages/main": { + "name": "@smartpointer-desktop/main", + "version": "1.1.0-SNAPSHOT", + "dependencies": { + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT" + }, + "devDependencies": { + "@graphql-codegen/cli": "2.13.11", + "@graphql-codegen/client-preset": "1.1.3", + "@openapitools/openapi-generator-cli": "2.5.2", + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", + "@types/ws": "8.5.3" + } + }, + "packages/preload": { + "name": "@smartpointer-desktop/preload", + "version": "1.1.0-SNAPSHOT", + "dependencies": { + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", + "unplugin-auto-expose": "0.0.3" + }, + "devDependencies": { + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT" + } + }, + "packages/renderer": { + "name": "@smartpointer-desktop/renderer", + "version": "1.1.0-SNAPSHOT", + "dependencies": { + "@chakra-ui/react": "2.3.6", + "@emotion/react": "11.10.5", + "@emotion/styled": "11.10.5", + "@heroicons/react": "2.0.12", + "@react-hook/window-size": "3.1.1", + "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", + "framer-motion": "7.6.2", + "qrcode": "1.5.1", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-dropzone": "14.2.3", + "unplugin-auto-expose": "0.0.3" + }, + "devDependencies": { + "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", + "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", + "@tsconfig/strictest": "1.0.2", + "@types/qrcode": "1.5.0", + "@types/react": "18.0.24", + "@types/react-dom": "18.0.8", + "@vitejs/plugin-react": "2.2.0" + } + }, + "packages/shared": { + "name": "@smartpointer-desktop/shared", + "version": "1.1.0-SNAPSHOT", + "dependencies": { + "@tsconfig/strictest": "1.0.2" + } + }, + "packages/tsconfig": { + "name": "@smartpointer-desktop/tsconfig", + "version": "1.1.0-SNAPSHOT", + "devDependencies": { + "@tsconfig/node16-strictest-esm": "1.0.3", + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@ardatan/relay-compiler": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", + "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", + "dev": true, + "requires": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "chalk": "^4.0.0", + "fb-watchman": "^2.0.0", + "fbjs": "^3.0.0", + "glob": "^7.1.1", + "immutable": "~3.7.6", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "relay-runtime": "12.0.0", + "signedsource": "^1.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@ardatan/sync-fetch": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz", + "integrity": "sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==" + }, + "@babel/core": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", + "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", + "requires": { + "@babel/types": "^7.20.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", + "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "requires": { + "@babel/types": "^7.19.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + }, + "@babel/helpers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.0.tgz", + "integrity": "sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } } } }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", - "dev": true + "@babel/parser": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", + "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==" }, - "node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "dependencies": { - "pako": "^1.0.5" + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/verror": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", - "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "@babel/plugin-syntax-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", "dev": true, - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "engines": { - "node": ">=0.6.0" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/vite": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.1.tgz", - "integrity": "sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==", - "devOptional": true, - "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "dependencies": { - "defaults": "^1.0.3" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "engines": { - "node": ">=10.13.0" + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/webpack-virtual-modules": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz", - "integrity": "sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" - }, - "node_modules/window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "@babel/plugin-transform-flow-strip-types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", + "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-flow": "^7.18.6" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } }, - "node_modules/ws": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", - "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" } }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + } }, - "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" } }, - "node_modules/xml2js/node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" + "@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" } }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, - "engines": { - "node": ">=8.0" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" + "@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + } }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" + "@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", + "@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" } }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, - "engines": { - "node": ">=12" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, - "engines": { - "node": ">=6" + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "@babel/runtime": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", + "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", + "requires": { + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/runtime-corejs3": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz", + "integrity": "sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", + "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } } }, - "packages/eslintrc": { - "name": "@smartpointer-desktop/eslintrc", - "version": "1.1.0-SNAPSHOT", - "devDependencies": { - "@typescript-eslint/eslint-plugin": "5.41.0", - "@typescript-eslint/parser": "5.41.0", - "eslint": "8.26.0", - "eslint-config-prettier": "8.5.0", - "eslint-import-resolver-typescript": "3.5.2", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-jsx-a11y": "6.6.1", - "eslint-plugin-react": "7.31.10", - "eslint-plugin-react-hooks": "4.6.0" + "@babel/types": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", + "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" } }, - "packages/main": { - "name": "@smartpointer-desktop/main", - "version": "1.1.0-SNAPSHOT", - "dependencies": { - "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT" - }, - "devDependencies": { - "@openapitools/openapi-generator-cli": "2.5.2", - "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", - "@types/ws": "8.5.3" + "@chakra-ui/accordion": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.2.tgz", + "integrity": "sha512-Jf7A6I0eIGk34zO5TiTW8orJOFQb5A/D1ekNYbaukNccoUPKJg/xdQ/b00oIR6LT93nJxggkoP/vszfmmTHuFg==", + "requires": { + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.11" } }, - "packages/preload": { - "name": "@smartpointer-desktop/preload", - "version": "1.1.0-SNAPSHOT", - "dependencies": { - "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", - "unplugin-auto-expose": "0.0.3" - }, - "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT" + "@chakra-ui/alert": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", + "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", + "requires": { + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/spinner": "2.0.10" } }, - "packages/renderer": { - "name": "@smartpointer-desktop/renderer", - "version": "1.1.0-SNAPSHOT", - "dependencies": { - "@chakra-ui/react": "2.3.6", - "@emotion/react": "11.10.5", - "@emotion/styled": "11.10.5", - "@heroicons/react": "2.0.12", - "@react-hook/window-size": "3.1.1", - "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", - "framer-motion": "7.6.2", - "qrcode": "1.5.1", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-dropzone": "14.2.3", - "unplugin-auto-expose": "0.0.3" - }, - "devDependencies": { - "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", - "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", - "@tsconfig/strictest": "1.0.2", - "@types/qrcode": "1.5.0", - "@types/react": "18.0.24", - "@types/react-dom": "18.0.8", - "@vitejs/plugin-react": "2.2.0" + "@chakra-ui/anatomy": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", + "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" + }, + "@chakra-ui/avatar": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.0.tgz", + "integrity": "sha512-mpAkfr/JG+BNBw2WvU55CSRFYKeFBUyAQAu3YulznLzi2U3e7k3IA0J8ofbrDYlSH/9KqkDuuSrxqGZgct+Nug==", + "requires": { + "@chakra-ui/image": "2.0.11", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4" } }, - "packages/shared": { - "name": "@smartpointer-desktop/shared", - "version": "1.1.0-SNAPSHOT", - "dependencies": { - "@tsconfig/strictest": "1.0.2" + "@chakra-ui/breadcrumb": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.0.tgz", + "integrity": "sha512-khBR579SLDEo6Wuo3tETRY6m0yJD/WCvSR7Res2g1B6OJgc9OQGM7yIMu4OdLUTwfXsCnlHTDoSQPUxFOVAMIQ==", + "requires": { + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4" } }, - "packages/tsconfig": { - "name": "@smartpointer-desktop/tsconfig", - "version": "1.1.0-SNAPSHOT", - "devDependencies": { - "@tsconfig/node16-strictest-esm": "1.0.3", - "@typescript-eslint/eslint-plugin": "5.41.0", - "@typescript-eslint/parser": "5.41.0" + "@chakra-ui/breakpoint-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", + "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + }, + "@chakra-ui/button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", + "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", + "requires": { + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/spinner": "2.0.10" } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + }, + "@chakra-ui/checkbox": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.2.tgz", + "integrity": "sha512-Y6Zbkkk5VNoe0RzqU6F+rKlFVPlubz1KIgYcb7CCNHGOM97dLtRm78eAvJ+7Xmpitr+7zZ4hJLLjfAz+e1X7rA==", "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/visually-hidden": "2.0.11", + "@zag-js/focus-visible": "0.1.0" } }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "@chakra-ui/clickable": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", + "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", "requires": { - "@babel/highlight": "^7.18.6" + "@chakra-ui/react-use-merge-refs": "2.0.4" } }, - "@babel/compat-data": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.0.tgz", - "integrity": "sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w==" + "@chakra-ui/close-button": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", + "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "requires": { + "@chakra-ui/icon": "3.0.11" + } }, - "@babel/core": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", - "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", + "@chakra-ui/color-mode": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", + "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.6", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helpers": "^7.19.4", - "@babel/parser": "^7.19.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" } }, - "@babel/generator": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", - "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", + "@chakra-ui/control-box": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", + "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", + "requires": {} + }, + "@chakra-ui/counter": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", + "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", "requires": { - "@babel/types": "^7.20.0", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } + "@chakra-ui/number-utils": "2.0.4", + "@chakra-ui/react-use-callback-ref": "2.0.4" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, + "@chakra-ui/css-reset": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", + "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", + "requires": {} + }, + "@chakra-ui/descendant": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", + "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", "requires": { - "@babel/types": "^7.18.6" + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-merge-refs": "2.0.4" } }, - "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "@chakra-ui/dom-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", + "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" + }, + "@chakra-ui/editable": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.13.tgz", + "integrity": "sha512-GM3n8t3/TOFFcDOWF/tuKsnqn66isZLsU+FkMRY2o0E8XjLBGjCKuXInPW5SRBqhje7EHC+kwViLE780PfwXbw==", "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" } }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + "@chakra-ui/event-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", + "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "@chakra-ui/focus-lock": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", + "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@chakra-ui/dom-utils": "2.0.3", + "react-focus-lock": "^2.9.1" } }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "@chakra-ui/form-control": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", + "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", "requires": { - "@babel/types": "^7.18.6" + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" } }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "@chakra-ui/hooks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.1.0.tgz", + "integrity": "sha512-4H6BDITq/YrStW99LXurgPkcz4qHSVy9V/QWXCvt1pCuiDTqNztiW4r508H3ApAOsL9NEbyXcM/zWYD7r5VDjA==", "requires": { - "@babel/types": "^7.18.6" + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/utils": "2.0.11", + "compute-scroll-into-view": "1.0.14", + "copy-to-clipboard": "3.3.1" } }, - "@babel/helper-module-transforms": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", - "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "@chakra-ui/icon": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", + "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.19.4", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4" + "@chakra-ui/shared-utils": "2.0.2" } }, - "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" + "@chakra-ui/image": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", + "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", + "requires": { + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + } }, - "@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "@chakra-ui/input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.12.tgz", + "integrity": "sha512-lJ5necu+Wt698HdCTC7L/ErA2nNVJAra7+knPe0qMR+AizGEL7LKCV/bdQe7eggjvKsDGD4alJIEczUvm3JVUQ==", "requires": { - "@babel/types": "^7.19.4" + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" } }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "@chakra-ui/layout": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.9.tgz", + "integrity": "sha512-ztsavtirtdtjxdqIkGR6fVcrffHp6hs1twRFO/dK14FGXrX3Nn9mi3J1fr1ITBHJq6y5B3yFEj0LHN2fO8dYyw==", "requires": { - "@babel/types": "^7.18.6" + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/shared-utils": "2.0.2" } }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "@chakra-ui/lazy-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", + "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "@chakra-ui/live-region": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", + "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", + "requires": {} }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + "@chakra-ui/media-query": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", + "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", + "requires": { + "@chakra-ui/breakpoint-utils": "2.0.4", + "@chakra-ui/react-env": "2.0.10" + } }, - "@babel/helpers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.0.tgz", - "integrity": "sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ==", + "@chakra-ui/menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.2.tgz", + "integrity": "sha512-6Z7ecXjp6BtZ1ExbFggfxsAj1hwtcathXekmCTxHpXOD+BdjAC/13+oLclwXeuBO85aoTmQrQ2ovfTkO31bzRQ==", "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0" + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-outside-click": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/transition": "2.0.11" } }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "@chakra-ui/modal": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.2.tgz", + "integrity": "sha512-cCYuqLZO4QqFUI1H+uEqixDk6UiCP3yC+sxkhFTXHIApSG9Z44v5np7BVTd6LKdmAN8pAWcc8Oxf14RvD6LWLw==", "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/focus-lock": "2.0.12", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/transition": "2.0.11", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.5.4" + } + }, + "@chakra-ui/number-input": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", + "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", + "requires": { + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-interval": "2.0.2", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4" } }, - "@babel/parser": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", - "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==" + "@chakra-ui/number-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", + "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" }, - "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "@chakra-ui/object-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", + "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + }, + "@chakra-ui/pin-input": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.15.tgz", + "integrity": "sha512-Ha8siSZm9gyjHHBK8ejwhKT6+75U12I/hNiYFvl2JHhc+Uh8tdi7+N+9SILO5vqbIv9kb+WGitvZ67I0cHjSfw==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/react-children-utils": "2.0.3", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4" } }, - "@babel/plugin-transform-react-jsx": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", - "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", - "dev": true, + "@chakra-ui/popover": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", + "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.19.0" + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/lazy-utils": "2.0.2", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-animation-state": "2.0.5", + "@chakra-ui/react-use-disclosure": "2.0.5", + "@chakra-ui/react-use-focus-effect": "2.0.5", + "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4" } }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", - "dev": true, + "@chakra-ui/popper": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", + "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", "requires": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@popperjs/core": "^2.9.3" } }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", - "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", - "dev": true, + "@chakra-ui/portal": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", + "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" } }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", - "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", - "dev": true, + "@chakra-ui/progress": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.12.tgz", + "integrity": "sha512-9qtZimZosTliI7siAZkLeCVdCpXCTxmSETCudHcCUsC+FtcFacmA65+We8qij1nOIqmsbm+NYU6PP89TU2n4Hg==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@chakra-ui/react-context": "2.0.4" } }, - "@babel/runtime": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", - "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", + "@chakra-ui/provider": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.20.tgz", + "integrity": "sha512-mNNfsgm05G4x1VzvHVR9+PNEiuxNnn9xUKDuEwoaO7+IHCMzCRMtPbSJjwmv0xvHUGB9+JChjPpZI5RuHQziJQ==", "requires": { - "regenerator-runtime": "^0.13.10" + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/system": "2.3.0", + "@chakra-ui/utils": "2.0.11" } }, - "@babel/runtime-corejs3": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz", - "integrity": "sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA==", - "dev": true, + "@chakra-ui/radio": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", + "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", "requires": { - "core-js-pure": "^3.25.1", - "regenerator-runtime": "^0.13.10" + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/react-types": "2.0.3", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@zag-js/focus-visible": "0.1.0" } }, - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "@chakra-ui/react": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.6.tgz", + "integrity": "sha512-xo43UU+yMqRGHZLU4fSgzojeRl5stlIfT+GLbT9CUVEm0HMJCt2m8RsNPBvGOMzANdC+bzwSiOm+MNzQBi9IBQ==", "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@chakra-ui/accordion": "2.1.2", + "@chakra-ui/alert": "2.0.11", + "@chakra-ui/avatar": "2.2.0", + "@chakra-ui/breadcrumb": "2.1.0", + "@chakra-ui/button": "2.0.11", + "@chakra-ui/checkbox": "2.2.2", + "@chakra-ui/close-button": "2.0.11", + "@chakra-ui/control-box": "2.0.10", + "@chakra-ui/counter": "2.0.10", + "@chakra-ui/css-reset": "2.0.8", + "@chakra-ui/editable": "2.0.13", + "@chakra-ui/form-control": "2.0.11", + "@chakra-ui/hooks": "2.1.0", + "@chakra-ui/icon": "3.0.11", + "@chakra-ui/image": "2.0.11", + "@chakra-ui/input": "2.0.12", + "@chakra-ui/layout": "2.1.9", + "@chakra-ui/live-region": "2.0.10", + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/menu": "2.1.2", + "@chakra-ui/modal": "2.2.2", + "@chakra-ui/number-input": "2.0.12", + "@chakra-ui/pin-input": "2.0.15", + "@chakra-ui/popover": "2.1.1", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", + "@chakra-ui/progress": "2.0.12", + "@chakra-ui/provider": "2.0.20", + "@chakra-ui/radio": "2.0.12", + "@chakra-ui/react-env": "2.0.10", + "@chakra-ui/select": "2.0.12", + "@chakra-ui/skeleton": "2.0.17", + "@chakra-ui/slider": "2.0.12", + "@chakra-ui/spinner": "2.0.10", + "@chakra-ui/stat": "2.0.11", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/switch": "2.0.14", + "@chakra-ui/system": "2.3.0", + "@chakra-ui/table": "2.0.11", + "@chakra-ui/tabs": "2.1.4", + "@chakra-ui/tag": "2.0.11", + "@chakra-ui/textarea": "2.0.12", + "@chakra-ui/theme": "2.1.14", + "@chakra-ui/theme-utils": "2.0.1", + "@chakra-ui/toast": "4.0.0", + "@chakra-ui/tooltip": "2.2.0", + "@chakra-ui/transition": "2.0.11", + "@chakra-ui/utils": "2.0.11", + "@chakra-ui/visually-hidden": "2.0.11" } }, - "@babel/traverse": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", - "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", + "@chakra-ui/react-children-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.3.tgz", + "integrity": "sha512-tPQjLEEuAw/DYLRw0cNs/g8tcdhZ3r21Sr9dTAzoyvfk0vbZ24gCXRElltW2GZLiFA63mAidzhPmc+yQF3Wtgg==", + "requires": {} + }, + "@chakra-ui/react-context": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", + "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", + "requires": {} + }, + "@chakra-ui/react-env": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", + "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", + "requires": {} + }, + "@chakra-ui/react-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", + "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", + "requires": {} + }, + "@chakra-ui/react-use-animation-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", + "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - } + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4" + } + }, + "@chakra-ui/react-use-callback-ref": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", + "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "requires": {} + }, + "@chakra-ui/react-use-controllable-state": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", + "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", + "requires": { + "@chakra-ui/react-use-callback-ref": "2.0.4" } }, - "@babel/types": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", - "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", + "@chakra-ui/react-use-disclosure": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", + "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@chakra-ui/react-use-callback-ref": "2.0.4" } }, - "@chakra-ui/accordion": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.2.tgz", - "integrity": "sha512-Jf7A6I0eIGk34zO5TiTW8orJOFQb5A/D1ekNYbaukNccoUPKJg/xdQ/b00oIR6LT93nJxggkoP/vszfmmTHuFg==", + "@chakra-ui/react-use-event-listener": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", + "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", "requires": { - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/transition": "2.0.11" + "@chakra-ui/react-use-callback-ref": "2.0.4" } }, - "@chakra-ui/alert": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.11.tgz", - "integrity": "sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==", + "@chakra-ui/react-use-focus-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", + "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", "requires": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/spinner": "2.0.10" + "@chakra-ui/dom-utils": "2.0.3", + "@chakra-ui/react-use-event-listener": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" } }, - "@chakra-ui/anatomy": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz", - "integrity": "sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==" - }, - "@chakra-ui/avatar": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.0.tgz", - "integrity": "sha512-mpAkfr/JG+BNBw2WvU55CSRFYKeFBUyAQAu3YulznLzi2U3e7k3IA0J8ofbrDYlSH/9KqkDuuSrxqGZgct+Nug==", + "@chakra-ui/react-use-focus-on-pointer-down": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", + "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", "requires": { - "@chakra-ui/image": "2.0.11", - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4" + "@chakra-ui/react-use-event-listener": "2.0.4" } }, - "@chakra-ui/breadcrumb": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.0.tgz", - "integrity": "sha512-khBR579SLDEo6Wuo3tETRY6m0yJD/WCvSR7Res2g1B6OJgc9OQGM7yIMu4OdLUTwfXsCnlHTDoSQPUxFOVAMIQ==", + "@chakra-ui/react-use-interval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", + "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", "requires": { - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4" + "@chakra-ui/react-use-callback-ref": "2.0.4" } }, - "@chakra-ui/breakpoint-utils": { + "@chakra-ui/react-use-latest-ref": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", + "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", + "requires": {} + }, + "@chakra-ui/react-use-merge-refs": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz", - "integrity": "sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==" + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", + "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", + "requires": {} }, - "@chakra-ui/button": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.11.tgz", - "integrity": "sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==", + "@chakra-ui/react-use-outside-click": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", + "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", "requires": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/spinner": "2.0.10" + "@chakra-ui/react-use-callback-ref": "2.0.4" } }, - "@chakra-ui/checkbox": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.2.tgz", - "integrity": "sha512-Y6Zbkkk5VNoe0RzqU6F+rKlFVPlubz1KIgYcb7CCNHGOM97dLtRm78eAvJ+7Xmpitr+7zZ4hJLLjfAz+e1X7rA==", + "@chakra-ui/react-use-pan-event": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", + "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", "requires": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/visually-hidden": "2.0.11", - "@zag-js/focus-visible": "0.1.0" + "@chakra-ui/event-utils": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.0.2", + "framesync": "5.3.0" } }, - "@chakra-ui/clickable": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.10.tgz", - "integrity": "sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==", - "requires": { - "@chakra-ui/react-use-merge-refs": "2.0.4" - } + "@chakra-ui/react-use-previous": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", + "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", + "requires": {} }, - "@chakra-ui/close-button": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.11.tgz", - "integrity": "sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==", + "@chakra-ui/react-use-safe-layout-effect": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", + "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", + "requires": {} + }, + "@chakra-ui/react-use-size": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", + "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", "requires": { - "@chakra-ui/icon": "3.0.11" + "@zag-js/element-size": "0.1.0" } }, - "@chakra-ui/color-mode": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz", - "integrity": "sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==", + "@chakra-ui/react-use-timeout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", + "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", "requires": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "@chakra-ui/react-use-callback-ref": "2.0.4" } }, - "@chakra-ui/control-box": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.10.tgz", - "integrity": "sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==", + "@chakra-ui/react-use-update-effect": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", + "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", "requires": {} }, - "@chakra-ui/counter": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.10.tgz", - "integrity": "sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==", + "@chakra-ui/react-utils": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", + "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", "requires": { - "@chakra-ui/number-utils": "2.0.4", - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@chakra-ui/utils": "2.0.11" } }, - "@chakra-ui/css-reset": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz", - "integrity": "sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==", - "requires": {} - }, - "@chakra-ui/descendant": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.10.tgz", - "integrity": "sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==", + "@chakra-ui/select": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", + "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", "requires": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@chakra-ui/form-control": "2.0.11" } }, - "@chakra-ui/dom-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz", - "integrity": "sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==" + "@chakra-ui/shared-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", + "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" }, - "@chakra-ui/editable": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.13.tgz", - "integrity": "sha512-GM3n8t3/TOFFcDOWF/tuKsnqn66isZLsU+FkMRY2o0E8XjLBGjCKuXInPW5SRBqhje7EHC+kwViLE780PfwXbw==", + "@chakra-ui/skeleton": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", + "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "requires": { + "@chakra-ui/media-query": "3.2.7", + "@chakra-ui/react-use-previous": "2.0.2" + } + }, + "@chakra-ui/slider": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", + "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", "requires": { + "@chakra-ui/number-utils": "2.0.4", "@chakra-ui/react-context": "2.0.4", "@chakra-ui/react-types": "2.0.3", "@chakra-ui/react-use-callback-ref": "2.0.4", "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", + "@chakra-ui/react-use-latest-ref": "2.0.2", "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "@chakra-ui/react-use-pan-event": "2.0.5", + "@chakra-ui/react-use-size": "2.0.4", + "@chakra-ui/react-use-update-effect": "2.0.4" } }, - "@chakra-ui/event-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz", - "integrity": "sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==" - }, - "@chakra-ui/focus-lock": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz", - "integrity": "sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==", - "requires": { - "@chakra-ui/dom-utils": "2.0.3", - "react-focus-lock": "^2.9.1" - } + "@chakra-ui/spinner": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", + "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", + "requires": {} }, - "@chakra-ui/form-control": { + "@chakra-ui/stat": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.11.tgz", - "integrity": "sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==", + "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", + "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", "requires": { "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@chakra-ui/react-context": "2.0.4" + } + }, + "@chakra-ui/styled-system": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", + "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", + "requires": { + "csstype": "^3.0.11", + "lodash.mergewith": "4.6.2" } }, - "@chakra-ui/hooks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.1.0.tgz", - "integrity": "sha512-4H6BDITq/YrStW99LXurgPkcz4qHSVy9V/QWXCvt1pCuiDTqNztiW4r508H3ApAOsL9NEbyXcM/zWYD7r5VDjA==", + "@chakra-ui/switch": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.14.tgz", + "integrity": "sha512-6lzhCkJq7vbD3yGaorGLp0ZZU4ewdKwAu0e62qR8TfYZwbcbpkXbBKloIHbA2XKOduISzS2WYqjmoP6jSKIxrA==", "requires": { - "@chakra-ui/react-utils": "2.0.8", - "@chakra-ui/utils": "2.0.11", - "compute-scroll-into-view": "1.0.14", - "copy-to-clipboard": "3.3.1" + "@chakra-ui/checkbox": "2.2.2" } }, - "@chakra-ui/icon": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.11.tgz", - "integrity": "sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==", + "@chakra-ui/system": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.3.0.tgz", + "integrity": "sha512-BxikahglBI0uU8FE3anEorDTU5oKTUuBIEKVcQrEVnrbNuRJEy1OVYyCNXfqW3MpruRO9ypYV2bWt02AZZWEaQ==", "requires": { - "@chakra-ui/shared-utils": "2.0.2" + "@chakra-ui/color-mode": "2.1.9", + "@chakra-ui/react-utils": "2.0.8", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme-utils": "2.0.1", + "@chakra-ui/utils": "2.0.11", + "react-fast-compare": "3.2.0" } }, - "@chakra-ui/image": { + "@chakra-ui/table": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.11.tgz", - "integrity": "sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==", + "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", + "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", "requires": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "@chakra-ui/react-context": "2.0.4" } }, - "@chakra-ui/input": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.12.tgz", - "integrity": "sha512-lJ5necu+Wt698HdCTC7L/ErA2nNVJAra7+knPe0qMR+AizGEL7LKCV/bdQe7eggjvKsDGD4alJIEczUvm3JVUQ==", + "@chakra-ui/tabs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.4.tgz", + "integrity": "sha512-/CQGj1lC9lvruT5BCYZH6Ok64W4CDSysDXuR2XPZXIih9kVOdXQEMXxG8+3vc63WqTBjHuURtZI0g8ouOy84ew==", "requires": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/object-utils": "2.0.4", + "@chakra-ui/clickable": "2.0.10", + "@chakra-ui/descendant": "3.0.10", + "@chakra-ui/lazy-utils": "2.0.2", "@chakra-ui/react-children-utils": "2.0.3", "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "@chakra-ui/react-use-controllable-state": "2.0.5", + "@chakra-ui/react-use-merge-refs": "2.0.4", + "@chakra-ui/react-use-safe-layout-effect": "2.0.2" } }, - "@chakra-ui/layout": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.9.tgz", - "integrity": "sha512-ztsavtirtdtjxdqIkGR6fVcrffHp6hs1twRFO/dK14FGXrX3Nn9mi3J1fr1ITBHJq6y5B3yFEj0LHN2fO8dYyw==", + "@chakra-ui/tag": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", + "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", "requires": { - "@chakra-ui/breakpoint-utils": "2.0.4", "@chakra-ui/icon": "3.0.11", - "@chakra-ui/object-utils": "2.0.4", - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/shared-utils": "2.0.2" + "@chakra-ui/react-context": "2.0.4" } }, - "@chakra-ui/lazy-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz", - "integrity": "sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==" + "@chakra-ui/textarea": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", + "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "requires": { + "@chakra-ui/form-control": "2.0.11" + } }, - "@chakra-ui/live-region": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.10.tgz", - "integrity": "sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==", - "requires": {} + "@chakra-ui/theme": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.14.tgz", + "integrity": "sha512-6EYJCQlrjSjNAJvZmw1un50F8+sQDFsdwu/7UzWe+TeANpKlz4ZcHbh0gkl3PD62lGis+ehITUwqRm8htvDOjw==", + "requires": { + "@chakra-ui/anatomy": "2.0.7", + "@chakra-ui/theme-tools": "2.0.12" + } }, - "@chakra-ui/media-query": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.7.tgz", - "integrity": "sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==", + "@chakra-ui/theme-tools": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", + "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", "requires": { - "@chakra-ui/breakpoint-utils": "2.0.4", - "@chakra-ui/react-env": "2.0.10" + "@chakra-ui/anatomy": "2.0.7", + "@ctrl/tinycolor": "^3.4.0" } }, - "@chakra-ui/menu": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.2.tgz", - "integrity": "sha512-6Z7ecXjp6BtZ1ExbFggfxsAj1hwtcathXekmCTxHpXOD+BdjAC/13+oLclwXeuBO85aoTmQrQ2ovfTkO31bzRQ==", + "@chakra-ui/theme-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.1.tgz", + "integrity": "sha512-NDwzgTPxm+v3PAJlSSU1MORHLMqO9vsRJ+ObELD5wpvE9aEyRziN/AZSoK2oLwCQMPEiU7R99K5ij1E6ptMt7w==", "requires": { - "@chakra-ui/clickable": "2.0.10", - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-animation-state": "2.0.5", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-focus-effect": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-outside-click": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/transition": "2.0.11" + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.14", + "lodash.mergewith": "4.6.2" } }, - "@chakra-ui/modal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.2.tgz", - "integrity": "sha512-cCYuqLZO4QqFUI1H+uEqixDk6UiCP3yC+sxkhFTXHIApSG9Z44v5np7BVTd6LKdmAN8pAWcc8Oxf14RvD6LWLw==", + "@chakra-ui/toast": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-4.0.0.tgz", + "integrity": "sha512-abeeloJac5T9WK2IN76fEM5FSRH+erNXln2HqDf5wLBn33avSBXWyTiUL8riVSUqto0lrIn6FuK/MmKo0DH4og==", "requires": { + "@chakra-ui/alert": "2.0.11", "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/focus-lock": "2.0.12", "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/transition": "2.0.11", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.5.4" + "@chakra-ui/react-use-timeout": "2.0.2", + "@chakra-ui/react-use-update-effect": "2.0.4", + "@chakra-ui/styled-system": "2.3.4", + "@chakra-ui/theme": "2.1.14" } }, - "@chakra-ui/number-input": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.12.tgz", - "integrity": "sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==", + "@chakra-ui/tooltip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", + "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", "requires": { - "@chakra-ui/counter": "2.0.10", - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4", + "@chakra-ui/popper": "3.0.8", + "@chakra-ui/portal": "2.0.10", "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", + "@chakra-ui/react-use-disclosure": "2.0.5", "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-interval": "2.0.2", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4" + "@chakra-ui/react-use-merge-refs": "2.0.4" } }, - "@chakra-ui/number-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz", - "integrity": "sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==" + "@chakra-ui/transition": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.11.tgz", + "integrity": "sha512-O0grc162LARPurjz1R+J+zr4AAKsVwN5+gaqLfZLMWg6TpvczJhwEA2fLCNAdkC/gomere390bJsy52xfUacUw==", + "requires": {} }, - "@chakra-ui/object-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz", - "integrity": "sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==" + "@chakra-ui/utils": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", + "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", + "requires": { + "@types/lodash.mergewith": "4.6.6", + "css-box-model": "1.2.1", + "framesync": "5.3.0", + "lodash.mergewith": "4.6.2" + } }, - "@chakra-ui/pin-input": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.15.tgz", - "integrity": "sha512-Ha8siSZm9gyjHHBK8ejwhKT6+75U12I/hNiYFvl2JHhc+Uh8tdi7+N+9SILO5vqbIv9kb+WGitvZ67I0cHjSfw==", + "@chakra-ui/visually-hidden": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", + "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", + "requires": {} + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, "requires": { - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@jridgewell/trace-mapping": "0.3.9" } }, - "@chakra-ui/popover": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.1.tgz", - "integrity": "sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==", + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, "requires": { - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-animation-state": "2.0.5", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-focus-effect": "2.0.5", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "@electron/get": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^3.0.0", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" } }, - "@chakra-ui/popper": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.8.tgz", - "integrity": "sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==", + "@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, "requires": { - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@popperjs/core": "^2.9.3" + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } } }, - "@chakra-ui/portal": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.10.tgz", - "integrity": "sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==", + "@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", "requires": { - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } } }, - "@chakra-ui/progress": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.0.12.tgz", - "integrity": "sha512-9qtZimZosTliI7siAZkLeCVdCpXCTxmSETCudHcCUsC+FtcFacmA65+We8qij1nOIqmsbm+NYU6PP89TU2n4Hg==", + "@emotion/cache": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", + "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", "requires": { - "@chakra-ui/react-context": "2.0.4" + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.1", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.1.3" } }, - "@chakra-ui/provider": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.0.20.tgz", - "integrity": "sha512-mNNfsgm05G4x1VzvHVR9+PNEiuxNnn9xUKDuEwoaO7+IHCMzCRMtPbSJjwmv0xvHUGB9+JChjPpZI5RuHQziJQ==", + "@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", "requires": { - "@chakra-ui/css-reset": "2.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-env": "2.0.10", - "@chakra-ui/system": "2.3.0", - "@chakra-ui/utils": "2.0.11" + "@emotion/memoize": "^0.8.0" } }, - "@chakra-ui/radio": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.12.tgz", - "integrity": "sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==", + "@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "@emotion/react": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz", + "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==", "requires": { - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@zag-js/focus-visible": "0.1.0" + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/cache": "^11.10.5", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" } }, - "@chakra-ui/react": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.3.6.tgz", - "integrity": "sha512-xo43UU+yMqRGHZLU4fSgzojeRl5stlIfT+GLbT9CUVEm0HMJCt2m8RsNPBvGOMzANdC+bzwSiOm+MNzQBi9IBQ==", + "@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", "requires": { - "@chakra-ui/accordion": "2.1.2", - "@chakra-ui/alert": "2.0.11", - "@chakra-ui/avatar": "2.2.0", - "@chakra-ui/breadcrumb": "2.1.0", - "@chakra-ui/button": "2.0.11", - "@chakra-ui/checkbox": "2.2.2", - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/control-box": "2.0.10", - "@chakra-ui/counter": "2.0.10", - "@chakra-ui/css-reset": "2.0.8", - "@chakra-ui/editable": "2.0.13", - "@chakra-ui/form-control": "2.0.11", - "@chakra-ui/hooks": "2.1.0", - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/image": "2.0.11", - "@chakra-ui/input": "2.0.12", - "@chakra-ui/layout": "2.1.9", - "@chakra-ui/live-region": "2.0.10", - "@chakra-ui/media-query": "3.2.7", - "@chakra-ui/menu": "2.1.2", - "@chakra-ui/modal": "2.2.2", - "@chakra-ui/number-input": "2.0.12", - "@chakra-ui/pin-input": "2.0.15", - "@chakra-ui/popover": "2.1.1", - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/progress": "2.0.12", - "@chakra-ui/provider": "2.0.20", - "@chakra-ui/radio": "2.0.12", - "@chakra-ui/react-env": "2.0.10", - "@chakra-ui/select": "2.0.12", - "@chakra-ui/skeleton": "2.0.17", - "@chakra-ui/slider": "2.0.12", - "@chakra-ui/spinner": "2.0.10", - "@chakra-ui/stat": "2.0.11", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/switch": "2.0.14", - "@chakra-ui/system": "2.3.0", - "@chakra-ui/table": "2.0.11", - "@chakra-ui/tabs": "2.1.4", - "@chakra-ui/tag": "2.0.11", - "@chakra-ui/textarea": "2.0.12", - "@chakra-ui/theme": "2.1.14", - "@chakra-ui/theme-utils": "2.0.1", - "@chakra-ui/toast": "4.0.0", - "@chakra-ui/tooltip": "2.2.0", - "@chakra-ui/transition": "2.0.11", - "@chakra-ui/utils": "2.0.11", - "@chakra-ui/visually-hidden": "2.0.11" + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" } }, - "@chakra-ui/react-children-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.3.tgz", - "integrity": "sha512-tPQjLEEuAw/DYLRw0cNs/g8tcdhZ3r21Sr9dTAzoyvfk0vbZ24gCXRElltW2GZLiFA63mAidzhPmc+yQF3Wtgg==", - "requires": {} - }, - "@chakra-ui/react-context": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.4.tgz", - "integrity": "sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==", - "requires": {} - }, - "@chakra-ui/react-env": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-2.0.10.tgz", - "integrity": "sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==", - "requires": {} - }, - "@chakra-ui/react-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz", - "integrity": "sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==", - "requires": {} + "@emotion/sheet": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", + "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" }, - "@chakra-ui/react-use-animation-state": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz", - "integrity": "sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==", + "@emotion/styled": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz", + "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==", "requires": { - "@chakra-ui/dom-utils": "2.0.3", - "@chakra-ui/react-use-event-listener": "2.0.4" + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" } }, - "@chakra-ui/react-use-callback-ref": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz", - "integrity": "sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==", + "@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", "requires": {} }, - "@chakra-ui/react-use-controllable-state": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz", - "integrity": "sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" - } + "@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" }, - "@chakra-ui/react-use-disclosure": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz", - "integrity": "sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" - } + "@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" }, - "@chakra-ui/react-use-event-listener": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz", - "integrity": "sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" - } + "@esbuild/android-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz", + "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==", + "dev": true, + "optional": true }, - "@chakra-ui/react-use-focus-effect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz", - "integrity": "sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==", + "@esbuild/linux-loong64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz", + "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, "requires": { - "@chakra-ui/dom-utils": "2.0.3", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" } }, - "@chakra-ui/react-use-focus-on-pointer-down": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz", - "integrity": "sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==", + "@graphql-codegen/add": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-3.2.1.tgz", + "integrity": "sha512-w82H/evh8SSGoD3K6K/Oh3kqSdbuU+TgHqMYmmHFxtH692v2xhN/cu1s/TotBQ7r4mO7OQutze7dde2tZEXGEQ==", + "dev": true, "requires": { - "@chakra-ui/react-use-event-listener": "2.0.4" + "@graphql-codegen/plugin-helpers": "^2.6.2", + "tslib": "~2.4.0" } }, - "@chakra-ui/react-use-interval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz", - "integrity": "sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==", + "@graphql-codegen/cli": { + "version": "2.13.11", + "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.13.11.tgz", + "integrity": "sha512-PJF36a1i6M7Btj1kB4PWWzBUO3u2BJzsd/6KXxRmEugcxrbaCnbTDDktopy0CZYKdqaFbXaowwbRY8Tk8DV99Q==", + "dev": true, "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@babel/generator": "^7.18.13", + "@babel/template": "^7.18.10", + "@babel/types": "^7.18.13", + "@graphql-codegen/core": "2.6.5", + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/apollo-engine-loader": "^7.3.6", + "@graphql-tools/code-file-loader": "^7.3.1", + "@graphql-tools/git-loader": "^7.2.1", + "@graphql-tools/github-loader": "^7.3.6", + "@graphql-tools/graphql-file-loader": "^7.5.0", + "@graphql-tools/json-file-loader": "^7.4.1", + "@graphql-tools/load": "7.8.0", + "@graphql-tools/prisma-loader": "^7.2.7", + "@graphql-tools/url-loader": "^7.13.2", + "@graphql-tools/utils": "^8.9.0", + "@whatwg-node/fetch": "^0.3.0", + "ansi-escapes": "^4.3.1", + "chalk": "^4.1.0", + "chokidar": "^3.5.2", + "cosmiconfig": "^7.0.0", + "cosmiconfig-typescript-loader": "4.1.1", + "debounce": "^1.2.0", + "detect-indent": "^6.0.0", + "graphql-config": "4.3.6", + "inquirer": "^8.0.0", + "is-glob": "^4.0.1", + "json-to-pretty-yaml": "^1.2.2", + "listr2": "^4.0.5", + "log-symbols": "^4.0.0", + "mkdirp": "^1.0.4", + "shell-quote": "^1.7.3", + "string-env-interpolation": "^1.0.1", + "ts-log": "^2.2.3", + "tslib": "^2.4.0", + "yaml": "^1.10.0", + "yargs": "^17.0.0" + } + }, + "@graphql-codegen/client-preset": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-1.1.3.tgz", + "integrity": "sha512-u4h6X1AcaN93dItnvQEtQjSTpth140Ceac2W3gUNR3IWfFGKLr9HvjNsiIteIFulcUJvLdIAVTfbnO8MUC1Twg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/template": "^7.15.4", + "@graphql-codegen/add": "^3.2.1", + "@graphql-codegen/gql-tag-operations": "1.5.6", + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/typed-document-node": "^2.3.6", + "@graphql-codegen/typescript": "^2.8.1", + "@graphql-codegen/typescript-operations": "^2.5.6", + "@graphql-codegen/visitor-plugin-common": "^2.13.1", + "@graphql-tools/utils": "^8.8.0", + "@graphql-typed-document-node/core": "3.1.1", + "tslib": "~2.4.0" } }, - "@chakra-ui/react-use-latest-ref": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz", - "integrity": "sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==", - "requires": {} - }, - "@chakra-ui/react-use-merge-refs": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz", - "integrity": "sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==", - "requires": {} - }, - "@chakra-ui/react-use-outside-click": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz", - "integrity": "sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==", + "@graphql-codegen/core": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.6.5.tgz", + "integrity": "sha512-oSbM8vINFxcV1GUasJTDIemMpEG1t6NkBG8odQCt/3ZExCYmoviHhG9vJB89QqJeU5W06qQB6SJn/dg/gv5Aqg==", + "dev": true, "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/schema": "^9.0.0", + "@graphql-tools/utils": "9.0.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.0.0.tgz", + "integrity": "sha512-kaCwyWnURxMsYbxzkfylLqFFelu83jKk3BJOOy0GIuxEtgXVS9v7Y/tojljo69Q+jaZ2YxAi3+d8IpM+hx768A==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@chakra-ui/react-use-pan-event": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz", - "integrity": "sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==", + "@graphql-codegen/gql-tag-operations": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-1.5.6.tgz", + "integrity": "sha512-SUeiBnVbV893paHud0Tr05hbZUMBeig6zcDoOw+9xoEivJUlCorOCXB3dXuUoRj+npOMH01IaFeGRbdiMm/RQg==", + "dev": true, "requires": { - "@chakra-ui/event-utils": "2.0.5", - "@chakra-ui/react-use-latest-ref": "2.0.2", - "framesync": "5.3.0" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" } }, - "@chakra-ui/react-use-previous": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz", - "integrity": "sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==", - "requires": {} - }, - "@chakra-ui/react-use-safe-layout-effect": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz", - "integrity": "sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==", - "requires": {} - }, - "@chakra-ui/react-use-size": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz", - "integrity": "sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==", + "@graphql-codegen/plugin-helpers": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", + "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", + "dev": true, "requires": { - "@zag-js/element-size": "0.1.0" + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" } }, - "@chakra-ui/react-use-timeout": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz", - "integrity": "sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==", + "@graphql-codegen/schema-ast": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-2.5.1.tgz", + "integrity": "sha512-tewa5DEKbglWn7kYyVBkh3J8YQ5ALqAMVmZwiVFIGOao5u66nd+e4HuFqp0u+Jpz4SJGGi0ap/oFrEvlqLjd2A==", + "dev": true, "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.4" + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-tools/utils": "^8.8.0", + "tslib": "~2.4.0" } }, - "@chakra-ui/react-use-update-effect": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz", - "integrity": "sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==", - "requires": {} - }, - "@chakra-ui/react-utils": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz", - "integrity": "sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==", + "@graphql-codegen/typed-document-node": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-2.3.6.tgz", + "integrity": "sha512-uJqBNj9z/5iIUgLwXsyWmnBaCzRtK+OiZsknTQmjzx/BzKTXK5lrbn06n4KK690wqkelpdZplTtww34ExmHG9Q==", + "dev": true, "requires": { - "@chakra-ui/utils": "2.0.11" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "tslib": "~2.4.0" } }, - "@chakra-ui/select": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.12.tgz", - "integrity": "sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==", + "@graphql-codegen/typescript": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.8.1.tgz", + "integrity": "sha512-kweV1DOOH2blvMheVL55TT0s9bxkmF/zijN9mdk9pRD20i/rI/46qbh8fNKqy/PV12vZOmZGNL6tigdghG2bqg==", + "dev": true, "requires": { - "@chakra-ui/form-control": "2.0.11" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/schema-ast": "^2.5.1", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" } }, - "@chakra-ui/shared-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz", - "integrity": "sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==" - }, - "@chakra-ui/skeleton": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz", - "integrity": "sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==", + "@graphql-codegen/typescript-operations": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-2.5.6.tgz", + "integrity": "sha512-7WqOsVMTUXf+tdt0jGOBuQINLYjPIGlcsnkzXQSPJ7rSGVj99VobVuwgmAeFmJctZ3lgwx3gjPZ0dyCIOBc2/A==", + "dev": true, "requires": { - "@chakra-ui/media-query": "3.2.7", - "@chakra-ui/react-use-previous": "2.0.2" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-codegen/typescript": "^2.8.1", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" } }, - "@chakra-ui/slider": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.12.tgz", - "integrity": "sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==", + "@graphql-codegen/visitor-plugin-common": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", + "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", + "dev": true, "requires": { - "@chakra-ui/number-utils": "2.0.4", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-callback-ref": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-latest-ref": "2.0.2", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-pan-event": "2.0.5", - "@chakra-ui/react-use-size": "2.0.4", - "@chakra-ui/react-use-update-effect": "2.0.4" + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/optimize": "^1.3.0", + "@graphql-tools/relay-operation-optimizer": "^6.5.0", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.4.0" } }, - "@chakra-ui/spinner": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.10.tgz", - "integrity": "sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==", - "requires": {} - }, - "@chakra-ui/stat": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.11.tgz", - "integrity": "sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==", + "@graphql-tools/apollo-engine-loader": { + "version": "7.3.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.3.18.tgz", + "integrity": "sha512-Qd1juunK4kH3xgF1aYJIcy8vD/f36Nm713r3ZaY2OKxc1+8d9PIYUlhIvcVUP1SzVxNWLbZm+q918QWFmI9p8A==", + "dev": true, "requires": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4" + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/utils": "9.1.0", + "@whatwg-node/fetch": "^0.5.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "requires": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } + } } }, - "@chakra-ui/styled-system": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz", - "integrity": "sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==", + "@graphql-tools/batch-execute": { + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.11.tgz", + "integrity": "sha512-TWvTSJOG38y5GzKO8TLkURT0XJrQyCCwgCq/kr3YQHkw8BLwLbj3N6Pzp88oMJwAMfYOVCWoN4wU6DigUbOrAw==", + "dev": true, "requires": { - "csstype": "^3.0.11", - "lodash.mergewith": "4.6.2" + "@graphql-tools/utils": "9.1.0", + "dataloader": "2.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@chakra-ui/switch": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.14.tgz", - "integrity": "sha512-6lzhCkJq7vbD3yGaorGLp0ZZU4ewdKwAu0e62qR8TfYZwbcbpkXbBKloIHbA2XKOduISzS2WYqjmoP6jSKIxrA==", + "@graphql-tools/code-file-loader": { + "version": "7.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-7.3.11.tgz", + "integrity": "sha512-OMngFSlxthssPFl/VJG3qISXyqjuNF/3fqXFXL6wsCSTve3t13X8Y0oWr3s20fMnJhZNHq0CVtDZutmSUPX7Xw==", + "dev": true, "requires": { - "@chakra-ui/checkbox": "2.2.2" + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@chakra-ui/system": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.3.0.tgz", - "integrity": "sha512-BxikahglBI0uU8FE3anEorDTU5oKTUuBIEKVcQrEVnrbNuRJEy1OVYyCNXfqW3MpruRO9ypYV2bWt02AZZWEaQ==", + "@graphql-tools/delegate": { + "version": "9.0.15", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-9.0.15.tgz", + "integrity": "sha512-55BTS/EDr/tt+fifY5pM8HwF9fYZo0ukv90Udan1mWnyQTZpBTRhg0MUKnWRl9vcaPkDZIkfJaG2sraFM5gZyw==", + "dev": true, "requires": { - "@chakra-ui/color-mode": "2.1.9", - "@chakra-ui/react-utils": "2.0.8", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/theme-utils": "2.0.1", - "@chakra-ui/utils": "2.0.11", - "react-fast-compare": "3.2.0" + "@graphql-tools/batch-execute": "8.5.11", + "@graphql-tools/executor": "0.0.7", + "@graphql-tools/schema": "9.0.9", + "@graphql-tools/utils": "9.1.0", + "dataloader": "2.1.0", + "tslib": "~2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@chakra-ui/table": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.11.tgz", - "integrity": "sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==", + "@graphql-tools/executor": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-0.0.7.tgz", + "integrity": "sha512-NfTru2DjgvuRF1PlYBHFhfsUwNiNBsby8LPlvPtB5duizbw0rQW14h1RM2IfBowR0wH42NRAJZWEW8Nbvlf0Dg==", + "dev": true, "requires": { - "@chakra-ui/react-context": "2.0.4" + "@graphql-tools/utils": "9.1.0", + "@graphql-typed-document-node/core": "3.1.1", + "@repeaterjs/repeater": "3.0.4", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@chakra-ui/tabs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.4.tgz", - "integrity": "sha512-/CQGj1lC9lvruT5BCYZH6Ok64W4CDSysDXuR2XPZXIih9kVOdXQEMXxG8+3vc63WqTBjHuURtZI0g8ouOy84ew==", + "@graphql-tools/executor-graphql-ws": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-0.0.2.tgz", + "integrity": "sha512-VydPeunrAihvAHAnIFQynSVwtmciMUmkMgW/CMqZODjeOPqCkWuu1CXATnqU/i3tjf9Z3iLiYheCDKfJpOcEFw==", + "dev": true, "requires": { - "@chakra-ui/clickable": "2.0.10", - "@chakra-ui/descendant": "3.0.10", - "@chakra-ui/lazy-utils": "2.0.2", - "@chakra-ui/react-children-utils": "2.0.3", - "@chakra-ui/react-context": "2.0.4", - "@chakra-ui/react-use-controllable-state": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.4", - "@chakra-ui/react-use-safe-layout-effect": "2.0.2" + "@graphql-tools/utils": "9.1.0", + "@repeaterjs/repeater": "3.0.4", + "@types/ws": "^8.0.0", + "graphql-ws": "5.11.2", + "isomorphic-ws": "5.0.0", + "tslib": "^2.4.0", + "ws": "8.11.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } } }, - "@chakra-ui/tag": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.11.tgz", - "integrity": "sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==", + "@graphql-tools/executor-http": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-0.0.2.tgz", + "integrity": "sha512-++ezIUeCcDc03jQpGnmVzw32P1aJSKH0FFXY/4zWnwdgCr2WdBBQCnYjptV1rjd5mohW2iIwRYc+HRw+TZzfXg==", + "dev": true, "requires": { - "@chakra-ui/icon": "3.0.11", - "@chakra-ui/react-context": "2.0.4" + "@graphql-tools/utils": "9.1.0", + "@repeaterjs/repeater": "3.0.4", + "@whatwg-node/fetch": "0.5.1", + "dset": "3.1.2", + "extract-files": "^11.0.0", + "meros": "1.2.1", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "requires": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } + } } }, - "@chakra-ui/textarea": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.12.tgz", - "integrity": "sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==", + "@graphql-tools/executor-legacy-ws": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-0.0.2.tgz", + "integrity": "sha512-ntIhYyK+keFk0LjQfH3/DHJRQufe1hH0ei9PXgds94Zg2GEjk49zxytxPfFC+hkqLXTAz8mGVj8MsuhDdEBtzw==", + "dev": true, "requires": { - "@chakra-ui/form-control": "2.0.11" + "@graphql-tools/utils": "9.1.0", + "@types/ws": "^8.0.0", + "isomorphic-ws": "5.0.0", + "tslib": "^2.4.0", + "ws": "8.11.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } } }, - "@chakra-ui/theme": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.1.14.tgz", - "integrity": "sha512-6EYJCQlrjSjNAJvZmw1un50F8+sQDFsdwu/7UzWe+TeANpKlz4ZcHbh0gkl3PD62lGis+ehITUwqRm8htvDOjw==", + "@graphql-tools/git-loader": { + "version": "7.2.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-7.2.11.tgz", + "integrity": "sha512-a/uL8PAgMcXV7wY3LjMXgTcrWt2iGpcYTRHVMN4QgwW9PTAOPcYjxZ9BfNPTEDZt/zk0Gd8YxgtCrg8ui+bLCg==", + "dev": true, "requires": { - "@chakra-ui/anatomy": "2.0.7", - "@chakra-ui/theme-tools": "2.0.12" + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "is-glob": "4.0.3", + "micromatch": "^4.0.4", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@chakra-ui/theme-tools": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz", - "integrity": "sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==", + "@graphql-tools/github-loader": { + "version": "7.3.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.3.18.tgz", + "integrity": "sha512-xQ7L+CWuA6vMCNDfXodCPCDFfoRL+LtFKqxhpA3wU8kVhWOm+QP3sJeVrRj2FAoIKHxcoUYsT4QflqKFj/vsQA==", + "dev": true, "requires": { - "@chakra-ui/anatomy": "2.0.7", - "@ctrl/tinycolor": "^3.4.0" + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/graphql-tag-pluck": "7.3.11", + "@graphql-tools/utils": "9.1.0", + "@whatwg-node/fetch": "^0.5.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "requires": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } + } } }, - "@chakra-ui/theme-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.1.tgz", - "integrity": "sha512-NDwzgTPxm+v3PAJlSSU1MORHLMqO9vsRJ+ObELD5wpvE9aEyRziN/AZSoK2oLwCQMPEiU7R99K5ij1E6ptMt7w==", + "@graphql-tools/graphql-file-loader": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.5.10.tgz", + "integrity": "sha512-G7/jO0v4sdKik0hyKo1XTXdJoOy6uU6enVvaiK07cVLXjf4+N08orP2ZeiRw6IUxYErPvZgOHJKAZZaeSjIF2A==", + "dev": true, "requires": { - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/theme": "2.1.14", - "lodash.mergewith": "4.6.2" + "@graphql-tools/import": "6.7.11", + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@chakra-ui/toast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-4.0.0.tgz", - "integrity": "sha512-abeeloJac5T9WK2IN76fEM5FSRH+erNXln2HqDf5wLBn33avSBXWyTiUL8riVSUqto0lrIn6FuK/MmKo0DH4og==", + "@graphql-tools/graphql-tag-pluck": { + "version": "7.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.3.11.tgz", + "integrity": "sha512-BU7ArN8+tv0KG3I4cuMF7MOpaVVOuqF6tnAmMjFqTrYOOJaQeTzweSvy6qtdkHA/sFZuttLa7BHxvJv4B4xS9w==", + "dev": true, "requires": { - "@chakra-ui/alert": "2.0.11", - "@chakra-ui/close-button": "2.0.11", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-use-timeout": "2.0.2", - "@chakra-ui/react-use-update-effect": "2.0.4", - "@chakra-ui/styled-system": "2.3.4", - "@chakra-ui/theme": "2.1.14" + "@babel/parser": "^7.16.8", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@chakra-ui/tooltip": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz", - "integrity": "sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==", + "@graphql-tools/import": { + "version": "6.7.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.7.11.tgz", + "integrity": "sha512-hd3HqNE5JLnOwPcr48vnTShldzRr5sRqrxqj9ouzEnqXUC1Pu/tMqp7p3K8ZPeaMw9h8aiUBBhvNM2sbSW51dQ==", + "dev": true, "requires": { - "@chakra-ui/popper": "3.0.8", - "@chakra-ui/portal": "2.0.10", - "@chakra-ui/react-types": "2.0.3", - "@chakra-ui/react-use-disclosure": "2.0.5", - "@chakra-ui/react-use-event-listener": "2.0.4", - "@chakra-ui/react-use-merge-refs": "2.0.4" + "@graphql-tools/utils": "9.1.0", + "resolve-from": "5.0.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, - "@chakra-ui/transition": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.11.tgz", - "integrity": "sha512-O0grc162LARPurjz1R+J+zr4AAKsVwN5+gaqLfZLMWg6TpvczJhwEA2fLCNAdkC/gomere390bJsy52xfUacUw==", - "requires": {} - }, - "@chakra-ui/utils": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.11.tgz", - "integrity": "sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==", + "@graphql-tools/json-file-loader": { + "version": "7.4.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-7.4.11.tgz", + "integrity": "sha512-uxWpbI0sT9i3bUX50joJKMafI7Gnb7W62B8om/qaCkQUjN1UmJmAea+z0afEoko/SsTYbBlWiu8Kw1M0UuzyHQ==", + "dev": true, "requires": { - "@types/lodash.mergewith": "4.6.6", - "css-box-model": "1.2.1", - "framesync": "5.3.0", - "lodash.mergewith": "4.6.2" + "@graphql-tools/utils": "9.1.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@chakra-ui/visually-hidden": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz", - "integrity": "sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==", - "requires": {} - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "@graphql-tools/load": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.8.0.tgz", + "integrity": "sha512-l4FGgqMW0VOqo+NMYizwV8Zh+KtvVqOf93uaLo9wJ3sS3y/egPCgxPMDJJ/ufQZG3oZ/0oWeKt68qop3jY0yZg==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "0.3.9" + "@graphql-tools/schema": "9.0.4", + "@graphql-tools/utils": "8.12.0", + "p-limit": "3.1.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/merge": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.6.tgz", + "integrity": "sha512-uUBokxXi89bj08P+iCvQk3Vew4vcfL5ZM6NTylWi8PIpoq4r5nJ625bRuN8h2uubEdRiH8ntN9M4xkd/j7AybQ==", + "dev": true, + "requires": { + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0" + } + }, + "@graphql-tools/schema": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.4.tgz", + "integrity": "sha512-B/b8ukjs18fq+/s7p97P8L1VMrwapYc3N2KvdG/uNThSazRRn8GsBK0Nr+FH+mVKiUfb4Dno79e3SumZVoHuOQ==", + "dev": true, + "requires": { + "@graphql-tools/merge": "8.3.6", + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + } + }, + "@graphql-tools/utils": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.12.0.tgz", + "integrity": "sha512-TeO+MJWGXjUTS52qfK4R8HiPoF/R7X+qmgtOYd8DTH0l6b+5Y/tlg5aGeUJefqImRq7nvi93Ms40k/Uz4D5CWw==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@ctrl/tinycolor": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", - "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" - }, - "@develar/schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "@graphql-tools/merge": { + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.11.tgz", + "integrity": "sha512-IpZh8r8e8FycXaUv04xe5HQH9siD1tkS8MvaO8Wb2FaPXv15XSYP+Wsb2MUStpIqGfQxa6xY/+eEuxv+VqwXyg==", "dev": true, "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@electron/get": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", - "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "@graphql-tools/optimize": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.3.1.tgz", + "integrity": "sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==", "dev": true, "requires": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "global-agent": "^3.0.0", - "global-tunnel-ng": "^2.7.1", - "got": "^9.6.0", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" + "tslib": "^2.4.0" } }, - "@electron/universal": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", - "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "@graphql-tools/prisma-loader": { + "version": "7.2.34", + "resolved": "https://registry.npmjs.org/@graphql-tools/prisma-loader/-/prisma-loader-7.2.34.tgz", + "integrity": "sha512-0yPFnGKF0qdql4IgUKpAKedQ7ou803oZdjJoopeL2IHiE8nV/rlskp+r/zb+7W6awtwNuvPR5joqM2L0HZa5mQ==", "dev": true, "requires": { - "@malept/cross-spawn-promise": "^1.1.0", - "asar": "^3.1.0", + "@graphql-tools/url-loader": "7.16.14", + "@graphql-tools/utils": "9.1.0", + "@types/js-yaml": "^4.0.0", + "@types/json-stable-stringify": "^1.0.32", + "@types/jsonwebtoken": "^8.5.0", + "chalk": "^4.1.0", "debug": "^4.3.1", - "dir-compare": "^2.4.0", - "fs-extra": "^9.0.1", - "minimatch": "^3.0.4", - "plist": "^3.0.4" + "dotenv": "^16.0.0", + "graphql-request": "^5.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "isomorphic-fetch": "^3.0.0", + "js-yaml": "^4.0.0", + "json-stable-stringify": "^1.0.1", + "jsonwebtoken": "^8.5.1", + "lodash": "^4.17.20", + "scuid": "^1.1.0", + "tslib": "^2.4.0", + "yaml-ast-parser": "^0.0.43" }, "dependencies": { - "fs-extra": { + "@graphql-tools/utils": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "tslib": "^2.4.0" } }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "dev": true } } }, - "@emotion/babel-plugin": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", - "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "@graphql-tools/relay-operation-optimizer": { + "version": "6.5.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.11.tgz", + "integrity": "sha512-afIcawEBYnLN/A0oGIi4wKPCSduhYcTkNCbplnFpfm0NSpQ6CfMs30rJwUrsKhkRmTi7wIpOhFk8i1Xe46LT0w==", + "dev": true, "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.17.12", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/serialize": "^1.1.1", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.1.3" + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } } } }, - "@emotion/cache": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", - "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", - "requires": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.3" - } - }, - "@emotion/hash": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" - }, - "@emotion/is-prop-valid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "@graphql-tools/schema": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.9.tgz", + "integrity": "sha512-hwg8trUytO5ayQ8bzL3+sAyXcu2rhKt5pLXpLO0/TMTN2nXd3DBO4mqx+Ra4Er2mE/msInGQ5EmZbxVBPv+hSg==", + "dev": true, "requires": { - "@emotion/memoize": "^0.8.0" + "@graphql-tools/merge": "8.3.11", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@emotion/memoize": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" - }, - "@emotion/react": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz", - "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==", + "@graphql-tools/url-loader": { + "version": "7.16.14", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.16.14.tgz", + "integrity": "sha512-nrjOz1ya1Qu6oETBPJSF0kKxo3UGT+qyi9TqMCnSQ/2R67ADicK7McSWfLdEUneADWhCx26b3XsOrQTKiG1KFg==", + "dev": true, "requires": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.5", - "@emotion/cache": "^11.10.5", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "hoist-non-react-statics": "^3.3.1" + "@ardatan/sync-fetch": "0.0.1", + "@graphql-tools/delegate": "9.0.15", + "@graphql-tools/executor-graphql-ws": "0.0.2", + "@graphql-tools/executor-http": "0.0.2", + "@graphql-tools/executor-legacy-ws": "0.0.2", + "@graphql-tools/utils": "9.1.0", + "@graphql-tools/wrap": "9.2.11", + "@types/ws": "^8.0.0", + "@whatwg-node/fetch": "^0.5.0", + "isomorphic-ws": "5.0.0", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.11", + "ws": "8.11.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@whatwg-node/fetch": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.5.1.tgz", + "integrity": "sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g==", + "dev": true, + "requires": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.12.0", + "web-streams-polyfill": "^3.2.0" + } + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } } }, - "@emotion/serialize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", - "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "@graphql-tools/utils": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", + "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", + "dev": true, "requires": { - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/unitless": "^0.8.0", - "@emotion/utils": "^1.2.0", - "csstype": "^3.0.2" + "tslib": "^2.4.0" } }, - "@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" - }, - "@emotion/styled": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz", - "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==", + "@graphql-tools/wrap": { + "version": "9.2.11", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-9.2.11.tgz", + "integrity": "sha512-QzzyfUQ/roXh7F7Bk0xDOaX9Wp6yafIg3S+rkcSrWrGmxPckCp95YqAtoZLp5HE/XcoZNvw2vD110n0F9nOg6g==", + "dev": true, "requires": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.5", - "@emotion/is-prop-valid": "^1.2.0", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0" + "@graphql-tools/delegate": "9.0.15", + "@graphql-tools/schema": "9.0.9", + "@graphql-tools/utils": "9.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + } } }, - "@emotion/unitless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" - }, - "@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "@graphql-typed-document-node/core": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", "requires": {} }, - "@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" - }, - "@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" - }, - "@esbuild/android-arm": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz", - "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz", - "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==", - "dev": true, - "optional": true - }, - "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, "@heroicons/react": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.12.tgz", @@ -13810,6 +18121,12 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, "@jimp/bmp": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.2.tgz", @@ -14541,6 +18858,47 @@ } } }, + "@peculiar/asn1-schema": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.3.tgz", + "integrity": "sha512-6GptMYDMyWBHTUKndHaDsRZUO/XMSgIns2krxcm2L7SEExRHwawFvSwNBhqNPR9HJwv3MruAiF1bhN0we6j6GQ==", + "dev": true, + "requires": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" + } + }, + "@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@peculiar/webcrypto": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.1.tgz", + "integrity": "sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.3.0", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.1", + "webcrypto-core": "^1.7.4" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, "@pkgr/utils": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", @@ -14598,6 +18956,12 @@ "@react-hook/throttle": "^2.2.0" } }, + "@repeaterjs/repeater": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", + "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==", + "dev": true + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -14621,6 +18985,8 @@ "@smartpointer-desktop/main": { "version": "file:packages/main", "requires": { + "@graphql-codegen/cli": "2.13.11", + "@graphql-codegen/client-preset": "1.1.3", "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", @@ -14759,18 +19125,39 @@ "@types/node": "*" } }, + "@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "dev": true + }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, + "@types/json-stable-stringify": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz", + "integrity": "sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/lodash": { "version": "4.14.186", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz", @@ -15068,6 +19455,23 @@ "react-refresh": "^0.14.0" } }, + "@whatwg-node/fetch": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.3.2.tgz", + "integrity": "sha512-Bs5zAWQs0tXsLa4mRmLw7Psps1EN78vPtgcLpw3qPY8s6UYPUM67zFZ9cy+7tZ64PXhfwzxJn+m7RH2Lq48RNQ==", + "dev": true, + "requires": { + "@peculiar/webcrypto": "^1.4.0", + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "event-target-polyfill": "^0.0.3", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "^5.8.0", + "web-streams-polyfill": "^3.2.0" + } + }, "@zag-js/element-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz", @@ -15084,6 +19488,15 @@ "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", "dev": true }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, "acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", @@ -15111,6 +19524,16 @@ "debug": "4" } }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -15403,6 +19826,12 @@ "es-shim-unscopables": "^1.0.0" } }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, "asar": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", @@ -15421,7 +19850,18 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "requires": { - "safer-buffer": "~2.1.0" + "safer-buffer": "~2.1.0" + } + }, + "asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "dev": true, + "requires": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" } }, "assert-plus": { @@ -15439,8 +19879,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "optional": true + "dev": true }, "async": { "version": "3.2.4", @@ -15475,6 +19914,12 @@ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" }, + "auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -15517,6 +19962,47 @@ "resolve": "^1.19.0" } }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "dev": true + }, + "babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dev": true, + "requires": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -15650,6 +20136,15 @@ "update-browserslist-db": "^1.0.9" } }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -15687,6 +20182,12 @@ "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", "dev": true }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", @@ -15778,6 +20279,15 @@ "sax": "^1.2.4" } }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "requires": { + "streamsearch": "^1.1.0" + } + }, "cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -15816,6 +20326,16 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -15826,6 +20346,17 @@ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz", "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==" }, + "capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -15849,6 +20380,44 @@ "supports-color": "^7.1.0" } }, + "change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", + "dev": true, + "requires": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -15898,6 +20467,12 @@ "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", "dev": true }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -15918,7 +20493,6 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, - "optional": true, "requires": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -16162,6 +20736,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, "colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", @@ -16182,6 +20762,12 @@ "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, "compare-version": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", @@ -16347,6 +20933,17 @@ "easy-table": "1.1.0" } }, + "constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -16401,6 +20998,22 @@ } } }, + "cosmiconfig-toml-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz", + "integrity": "sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==", + "dev": true, + "requires": { + "@iarna/toml": "^2.2.5" + } + }, + "cosmiconfig-typescript-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.1.1.tgz", + "integrity": "sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg==", + "dev": true, + "requires": {} + }, "crc": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", @@ -16426,6 +21039,14 @@ "cross-spawn": "^7.0.1" } }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "requires": { + "node-fetch": "2.6.7" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -16464,12 +21085,24 @@ "assert-plus": "^1.0.0" } }, + "dataloader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz", + "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", + "dev": true + }, "date-fns": { "version": "2.29.3", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", "dev": true }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, "debounce-fn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", @@ -16559,6 +21192,18 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, "detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -16706,6 +21351,16 @@ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -16726,6 +21381,12 @@ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, + "dset": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz", + "integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==", + "dev": true + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -16792,6 +21453,15 @@ "safer-buffer": "^2.1.0" } }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, "ejs": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", @@ -17593,6 +22263,18 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "event-target-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz", + "integrity": "sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ==", + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -17701,6 +22383,12 @@ } } }, + "extract-files": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", + "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==", + "dev": true + }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -17775,6 +22463,36 @@ "reusify": "^1.0.4" } }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "dev": true, + "requires": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "dev": true + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -17924,6 +22642,30 @@ "mime-types": "^2.1.12" } }, + "form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "dev": true + }, + "formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dev": true, + "requires": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "dependencies": { + "web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "dev": true + } + } + }, "framer-motion": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.6.2.tgz", @@ -18305,6 +23047,86 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, + "graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" + }, + "graphql-config": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-4.3.6.tgz", + "integrity": "sha512-i7mAPwc0LAZPnYu2bI8B6yXU5820Wy/ArvmOseDLZIu0OU1UTULEuexHo6ZcHXeT9NvGGaUPQZm8NV3z79YydA==", + "dev": true, + "requires": { + "@graphql-tools/graphql-file-loader": "^7.3.7", + "@graphql-tools/json-file-loader": "^7.3.7", + "@graphql-tools/load": "^7.5.5", + "@graphql-tools/merge": "^8.2.6", + "@graphql-tools/url-loader": "^7.9.7", + "@graphql-tools/utils": "^8.6.5", + "cosmiconfig": "7.0.1", + "cosmiconfig-toml-loader": "1.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "minimatch": "4.2.1", + "string-env-interpolation": "1.0.1", + "ts-node": "^10.8.1", + "tslib": "^2.4.0" + }, + "dependencies": { + "minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "graphql-request": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.0.0.tgz", + "integrity": "sha512-SpVEnIo2J5k2+Zf76cUkdvIRaq5FMZvGQYnA4lUWYbc99m+fHh4CZYRRO/Ff4tCLQ613fzCm3SiDT64ubW5Gyw==", + "requires": { + "@graphql-typed-document-node/core": "^3.1.1", + "cross-fetch": "^3.1.5", + "extract-files": "^9.0.0", + "form-data": "^3.0.0" + }, + "dependencies": { + "extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "graphql-ws": { + "version": "5.11.2", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.11.2.tgz", + "integrity": "sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w==", + "requires": {} + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -18368,6 +23190,16 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, + "header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "requires": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, "hey-listen": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", @@ -18473,6 +23305,12 @@ } } }, + "immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -18482,12 +23320,24 @@ "resolve-from": "^4.0.0" } }, + "import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "dev": true + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -18553,6 +23403,16 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==" }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -18656,6 +23516,15 @@ "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", "integrity": "sha512-tLn1j3wYSL6DkvEI+V/j0pKohpa5jk+ER74v6S4SgCXnjS0WA+DoZbwZBrrhgwksMvtuwndyGeG5F8YMsoBzSA==" }, + "is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -18697,6 +23566,15 @@ "has-tostringtag": "^1.0.0" } }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -18734,12 +23612,30 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -18749,6 +23645,12 @@ "call-bind": "^1.0.2" } }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -18773,6 +23675,23 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "requires": {} + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -18875,6 +23794,15 @@ "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" }, + "json-stable-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "dev": true, + "requires": { + "jsonify": "^0.0.1" + } + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -18886,6 +23814,16 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, + "json-to-pretty-yaml": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", + "integrity": "sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==", + "dev": true, + "requires": { + "remedial": "^1.0.7", + "remove-trailing-spaces": "^1.0.6" + } + }, "json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", @@ -18904,6 +23842,38 @@ "graceful-fs": "^4.1.6" } }, + "jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -18932,14 +23902,35 @@ } } }, - "jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, "requires": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, "keyv": { @@ -19000,6 +23991,22 @@ "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, + "listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + } + }, "load-bmfont": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", @@ -19053,6 +24060,42 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -19064,6 +24107,12 @@ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, "lodash.pad": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", @@ -19089,6 +24138,42 @@ "is-unicode-supported": "^0.1.0" } }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -19097,6 +24182,24 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lower-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", + "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -19125,6 +24228,12 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, "matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -19155,6 +24264,13 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, + "meros": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/meros/-/meros-1.2.1.tgz", + "integrity": "sha512-R2f/jxYqCAGI19KhAvaxSOxALBMkaXWH2a7rOyqQw+ZmizX5bKkEYWLzdhC+U82ZVVPVp6MCXe3EkVligh+12g==", + "dev": true, + "requires": {} + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -19274,6 +24390,16 @@ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node-abort-controller": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", @@ -19286,15 +24412,26 @@ "dev": true, "optional": true }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true + }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, "requires": { "whatwg-url": "^5.0.0" } }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, "node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", @@ -19497,6 +24634,12 @@ "gauge": "~1.2.0" } }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -19691,6 +24834,15 @@ "p-limit": "^3.0.2" } }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -19701,6 +24853,16 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -19728,6 +24890,17 @@ "xml2js": "^0.4.5" } }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, "parse-headers": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", @@ -19743,6 +24916,26 @@ "json-parse-better-errors": "^1.0.1" } }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -19764,6 +24957,21 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true + }, "path-to-regexp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", @@ -19997,6 +25205,15 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -20038,6 +25255,21 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "pvtsutils": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz", + "integrity": "sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "dev": true + }, "qrcode": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", @@ -20331,6 +25563,35 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "relay-runtime": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", + "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "fbjs": "^3.0.0", + "invariant": "^2.2.4" + } + }, + "remedial": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", + "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "remove-trailing-spaces": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz", + "integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==", + "dev": true + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -20425,6 +25686,12 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -20525,6 +25792,12 @@ "loose-envify": "^1.1.0" } }, + "scuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz", + "integrity": "sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==", + "dev": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -20537,6 +25810,17 @@ "dev": true, "optional": true }, + "sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", @@ -20594,6 +25878,12 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, + "signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==", + "dev": true + }, "simple-update-notifier": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", @@ -20622,7 +25912,6 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "optional": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -20636,6 +25925,16 @@ "dev": true, "optional": true }, + "snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -20706,6 +26005,15 @@ "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", "integrity": "sha512-UUFYD2oWbNwULH6WoVtLUOw8ch586B+HUqcsAjjjeoBQAM1bD4wZRXu01koaxyd8UeYpybWqW4h+lO1Okv40Tg==" }, + "sponge-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", + "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -20735,11 +26043,23 @@ "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", "dev": true }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, + "string-env-interpolation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", + "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==", + "dev": true + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -20861,6 +26181,15 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, + "swap-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", + "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "synckit": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", @@ -20967,6 +26296,15 @@ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" }, + "title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -21021,8 +26359,7 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "traverse": { "version": "0.3.9", @@ -21044,6 +26381,12 @@ "utf8-byte-length": "^1.0.1" } }, + "ts-log": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", + "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==", + "dev": true + }, "ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -21152,6 +26495,12 @@ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true }, + "ua-parser-js": { + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", + "dev": true + }, "ufo": { "version": "0.8.6", "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", @@ -21169,11 +26518,46 @@ "which-boxed-primitive": "^1.0.2" } }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true + }, + "undici": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "dev": true, + "requires": { + "busboy": "^1.6.0" + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, + "unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dev": true, + "requires": { + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, "unplugin": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.9.5.tgz", @@ -21251,6 +26635,24 @@ "picocolors": "^1.0.0" } }, + "upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -21330,6 +26732,12 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-or-promise": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "dev": true + }, "verror": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", @@ -21364,11 +26772,29 @@ "defaults": "^1.0.3" } }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true + }, + "webcrypto-core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.5.tgz", + "integrity": "sha512-gaExY2/3EHQlRNNNVSrbG2Cg94Rutl7fAaKILS1w8ZDhGxdFOaw6EbCfHIxPy9vt/xwp5o0VQAx9aySPF6hU1A==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.1.6", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" + } + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "webpack-sources": { "version": "3.2.3", @@ -21380,11 +26806,16 @@ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz", "integrity": "sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg==" }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -21509,6 +26940,12 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, + "yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", + "dev": true + }, "yargs": { "version": "17.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", diff --git a/desktop/package.json b/desktop/package.json index 4511d89f..97a3b580 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -9,7 +9,7 @@ "generate-electron-vendors": "cross-env ELECTRON_RUN_AS_NODE=1 electron --experimental-loader ts-node/esm scripts/generate-electron-vendors.mts", "dev": "node --experimental-loader ts-node/esm scripts/watch.mts", "build": "npm run build -ws --if-present", - "codegen": "npm run codegen -ws --if-present", + "codegen": "npm run codegen -ws --if-present --", "lint": "eslint . --ext .ts,.tsx,mts", "format": "npm run check:format --write", "check:format": "prettier . --check", @@ -24,6 +24,9 @@ "@stomp/stompjs": "6.1.2", "axios": "1.1.3", "electron-store": "8.1.0", + "graphql": "16.6.0", + "graphql-request": "5.0.0", + "graphql-ws": "5.11.2", "ws": "8.10.0" }, "devDependencies": { diff --git a/desktop/packages/main/codegen.ts b/desktop/packages/main/codegen.ts new file mode 100644 index 00000000..e6960610 --- /dev/null +++ b/desktop/packages/main/codegen.ts @@ -0,0 +1,16 @@ +import { CodegenConfig } from "@graphql-codegen/cli"; + +const config: CodegenConfig = { + overwrite: true, + schema: "../../../app/src/main/resources/graphql/schema.graphqls", + documents: ["src/**/*.ts{,x}"], + ignoreNoDocuments: true, + generates: { + "./src/gql/": { + preset: "client", + plugins: [], + }, + }, +}; + +export default config; diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json index 5f00aafc..71932dc6 100644 --- a/desktop/packages/main/package.json +++ b/desktop/packages/main/package.json @@ -4,11 +4,13 @@ "description": "", "scripts": { "build": "vite build", - "codegen": "openapi-generator-cli generate -g typescript-axios -i http://localhost:8080/v3/api-docs/Public%20API -o ./src/generated/http-client" + "codegen": "gql-gen --config codegen.ts" }, "keywords": [], "author": "", "devDependencies": { + "@graphql-codegen/cli": "2.13.11", + "@graphql-codegen/client-preset": "1.1.3", "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", diff --git a/desktop/packages/main/src/gql/fragment-masking.ts b/desktop/packages/main/src/gql/fragment-masking.ts new file mode 100644 index 00000000..af0fecab --- /dev/null +++ b/desktop/packages/main/src/gql/fragment-masking.ts @@ -0,0 +1,40 @@ +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + + +export type FragmentType> = TDocumentType extends DocumentNode< + infer TType, + any +> + ? TType extends { ' $fragmentName'?: infer TKey } + ? TKey extends string + ? { ' $fragmentRefs'?: { [key in TKey]: TType } } + : never + : never + : never; + +// return non-nullable if `fragmentType` is non-nullable +export function useFragment( + _documentNode: DocumentNode, + fragmentType: FragmentType> +): TType; +// return nullable if `fragmentType` is nullable +export function useFragment( + _documentNode: DocumentNode, + fragmentType: FragmentType> | null | undefined +): TType | null | undefined; +// return array of non-nullable if `fragmentType` is array of non-nullable +export function useFragment( + _documentNode: DocumentNode, + fragmentType: ReadonlyArray>> +): ReadonlyArray; +// return array of nullable if `fragmentType` is array of nullable +export function useFragment( + _documentNode: DocumentNode, + fragmentType: ReadonlyArray>> | null | undefined +): ReadonlyArray | null | undefined +export function useFragment( + _documentNode: DocumentNode, + fragmentType: FragmentType> | ReadonlyArray>> | null | undefined +): TType | ReadonlyArray | null | undefined { + return fragmentType as any +} diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts new file mode 100644 index 00000000..c63fcfe2 --- /dev/null +++ b/desktop/packages/main/src/gql/gql.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +import * as types from './graphql'; +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + +const documents = []; +export function graphql(source: string): unknown; +export function graphql(source: string) { + return (documents as any)[source] ?? {}; +} + +export type DocumentType> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never; \ No newline at end of file diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts new file mode 100644 index 00000000..65a38474 --- /dev/null +++ b/desktop/packages/main/src/gql/graphql.ts @@ -0,0 +1,208 @@ +/* eslint-disable */ +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; +}; + +/** アクセストークン */ +export type AccessToken = { + __typename?: 'AccessToken'; + /** アクセストークン */ + accessToken: Scalars['String']; + /** トークンタイプ */ + tokenType: Scalars['String']; + /** TTL [s] */ + ttl: Scalars['Int']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + /** ルーム作成API */ + createRoom: Room; + /** ルーム削除API */ + deleteRoom: Scalars['ID']; + /** ポインター切断API */ + disconnectPointer: PointerControl; + /** スライドを進めるAPI */ + goNextSlide: SlideControl; + /** スライドを戻すAPI */ + goPreviousSlide: SlideControl; + /** ルーム入室API */ + joinRoom: AccessToken; + /** ポインター操作API */ + movePointer: PointerControl; + /** タイマーリセットAPI */ + resetTimer: Timer; + /** タイマー再開API */ + resumeTimer: Timer; + /** タイマー開始API */ + startTimer: Timer; + /** タイマー停止API */ + stopTimer: Timer; +}; + + +export type MutationDeleteRoomArgs = { + roomId: Scalars['ID']; +}; + + +export type MutationJoinRoomArgs = { + passcode: Scalars['String']; + roomId: Scalars['ID']; + userName: Scalars['String']; +}; + + +export type MutationStartTimerArgs = { + inputTime: Scalars['Int']; +}; + + +export type MutationStopTimerArgs = { + remainingTimeAtPaused: Scalars['Int']; +}; + +/** ポインター操作 */ +export type PointerControl = { + __typename?: 'PointerControl'; + /** 操作方向 */ + orientation: PointerControlOrientation; + /** 操作者 */ + user: User; +}; + +/** ポインター操作方向 */ +export type PointerControlOrientation = { + __typename?: 'PointerControlOrientation'; + /** α値 */ + alpha: Scalars['Float']; + /** β値 */ + beta: Scalars['Float']; + /** γ値 */ + gamma: Scalars['Float']; +}; + +export type Query = { + __typename?: 'Query'; + /** タイマー取得API */ + getTimer: Timer; + /** ユーザリスト取得API */ + getUsers: Users; + /** ヘルスチェックAPI */ + health: Scalars['Boolean']; +}; + + +export type QueryGetTimerArgs = { + roomId: Scalars['ID']; +}; + + +export type QueryGetUsersArgs = { + roomId: Scalars['ID']; +}; + +/** ルーム */ +export type Room = { + __typename?: 'Room'; + /** ルームID */ + id: Scalars['ID']; + /** パスコード */ + passcode: Scalars['String']; +}; + +/** スライド操作 */ +export enum SlideControl { + /** 進める */ + Next = 'NEXT', + /** 戻す */ + Previous = 'PREVIOUS' +} + +export type Subscription = { + __typename?: 'Subscription'; + /** ポインター操作購読API */ + subscribeToPointer: PointerControl; + /** ポインター切断イベント購読API */ + subscribeToPointerDisconnectEvent: User; + /** スライド操作購読API */ + subscribeToSlideControl: SlideControl; + /** タイマー購読API */ + subscribeToTimer: Timer; + /** ユーザリスト購読API */ + subscribeToUsers: Array; +}; + + +export type SubscriptionSubscribeToPointerArgs = { + roomId: Scalars['ID']; +}; + + +export type SubscriptionSubscribeToPointerDisconnectEventArgs = { + roomId: Scalars['ID']; +}; + + +export type SubscriptionSubscribeToSlideControlArgs = { + roomId: Scalars['ID']; +}; + + +export type SubscriptionSubscribeToTimerArgs = { + roomId: Scalars['ID']; +}; + + +export type SubscriptionSubscribeToUsersArgs = { + roomId: Scalars['ID']; +}; + +/** タイマー */ +export type Timer = { + __typename?: 'Timer'; + /** 終了時刻 */ + finishAt: Scalars['String']; + /** 入力時間 [s] */ + inputTime: Scalars['Int']; + /** 一時停止時点での残り時間 [s] */ + remainingTimeAtPaused?: Maybe; + /** ステータス */ + status: TimerStatus; +}; + +/** タイマーステータス */ +export enum TimerStatus { + /** 一時停止中 */ + Paused = 'PAUSED', + /** 準備中 */ + Ready = 'READY', + /** 実行中 */ + Running = 'RUNNING' +} + +/** ユーザ */ +export type User = { + __typename?: 'User'; + /** ユーザID */ + id: Scalars['ID']; + /** ルーム名 */ + name: Scalars['String']; +}; + +/** ユーザリスト */ +export type Users = { + __typename?: 'Users'; + /** ユーザリスト */ + users: Array; +}; diff --git a/desktop/packages/main/src/gql/index.ts b/desktop/packages/main/src/gql/index.ts new file mode 100644 index 00000000..407a4706 --- /dev/null +++ b/desktop/packages/main/src/gql/index.ts @@ -0,0 +1,2 @@ +export * from "./gql" +export * from "./fragment-masking" \ No newline at end of file diff --git a/desktop/packages/main/tsconfig.json b/desktop/packages/main/tsconfig.json index adbae600..93a42169 100644 --- a/desktop/packages/main/tsconfig.json +++ b/desktop/packages/main/tsconfig.json @@ -7,7 +7,8 @@ "src/view/window/.ts" ], "exclude": [ - "src/generated/**/*" + "src/generated/**/*", + "src/gql/**/*" ], "compilerOptions": { "importsNotUsedAsValues": "remove", From aa9aba2016bb67b01b6ffa80f62a7cd64bae00bf Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 12:13:45 +0900 Subject: [PATCH 081/189] create room via GraphQL instead of REST --- desktop/.prettierignore | 1 - desktop/package-lock.json | 2 + desktop/packages/main/package.json | 1 + desktop/packages/main/src/api.ts | 75 +++- desktop/packages/main/src/controller/index.ts | 20 +- .../main/src/generated/http-client/.gitignore | 4 - .../main/src/generated/http-client/.npmignore | 1 - .../http-client/.openapi-generator-ignore | 23 - .../http-client/.openapi-generator/FILES | 9 - .../http-client/.openapi-generator/VERSION | 1 - .../main/src/generated/http-client/api.ts | 422 ------------------ .../main/src/generated/http-client/base.ts | 71 --- .../main/src/generated/http-client/common.ts | 148 ------ .../generated/http-client/configuration.ts | 101 ----- .../src/generated/http-client/git_push.sh | 57 --- .../main/src/generated/http-client/index.ts | 18 - desktop/packages/main/src/gql/gql.ts | 7 +- desktop/packages/main/src/gql/graphql.ts | 9 + desktop/packages/main/src/types.ts | 7 +- .../main/src/view/window/inviteLink.ts | 2 +- desktop/packages/main/tsconfig.json | 1 - 21 files changed, 102 insertions(+), 878 deletions(-) delete mode 100644 desktop/packages/main/src/generated/http-client/.gitignore delete mode 100644 desktop/packages/main/src/generated/http-client/.npmignore delete mode 100644 desktop/packages/main/src/generated/http-client/.openapi-generator-ignore delete mode 100644 desktop/packages/main/src/generated/http-client/.openapi-generator/FILES delete mode 100644 desktop/packages/main/src/generated/http-client/.openapi-generator/VERSION delete mode 100644 desktop/packages/main/src/generated/http-client/api.ts delete mode 100644 desktop/packages/main/src/generated/http-client/base.ts delete mode 100644 desktop/packages/main/src/generated/http-client/common.ts delete mode 100644 desktop/packages/main/src/generated/http-client/configuration.ts delete mode 100644 desktop/packages/main/src/generated/http-client/git_push.sh delete mode 100644 desktop/packages/main/src/generated/http-client/index.ts diff --git a/desktop/.prettierignore b/desktop/.prettierignore index b88ef610..fde5c378 100644 --- a/desktop/.prettierignore +++ b/desktop/.prettierignore @@ -1,4 +1,3 @@ -packages/main/src/generated/http-client/* **/node_modules **/dist **/*.svg diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 910e2d4d..c1dcf6f9 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -15336,6 +15336,7 @@ "devDependencies": { "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", + "@graphql-typed-document-node/core": "3.1.1", "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", @@ -18987,6 +18988,7 @@ "requires": { "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", + "@graphql-typed-document-node/core": "3.1.1", "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json index 71932dc6..e1b4dca8 100644 --- a/desktop/packages/main/package.json +++ b/desktop/packages/main/package.json @@ -11,6 +11,7 @@ "devDependencies": { "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", + "@graphql-typed-document-node/core": "3.1.1", "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", diff --git a/desktop/packages/main/src/api.ts b/desktop/packages/main/src/api.ts index 863a350f..67fbbf42 100644 --- a/desktop/packages/main/src/api.ts +++ b/desktop/packages/main/src/api.ts @@ -1,19 +1,72 @@ -import axios from "axios"; +import type { TypedDocumentNode } from "@graphql-typed-document-node/core"; +import { ExecutionResult, print } from "graphql"; +import { GraphQLClient } from "graphql-request"; +import { RemoveIndex, RequestOptions } from "graphql-request/dist/types"; +import { createClient, Sink } from "graphql-ws"; +import { WebSocket } from "ws"; -import { Configuration, RoomApi } from "./generated/http-client"; - -const API_URL = +const httpOrigin = process.env["USE_DEV_BACKEND"] === "true" ? "http://localhost:8080" : "https://smartpointer.abelab.dev"; -const config = new Configuration({ - basePath: API_URL, -}); +const graphqlHttpEndpoint = `${httpOrigin}/graphql`; + +const graphqlHttpClient = new GraphQLClient(graphqlHttpEndpoint); + +export const request = < + T = unknown, + V extends Record = Record +>({ + query, + variables, +}: { + query: TypedDocumentNode; +} & (V extends Record + ? { variables?: V } + : keyof RemoveIndex extends never + ? { variables?: V } + : { variables: V })): Promise => { + return graphqlHttpClient.request({ + document: query, + variables: variables, + } as RequestOptions); +}; + +const wsOrigin = + process.env["USE_DEV_BACKEND"] === "true" + ? "ws://localhost:8080" + : "wss://smartpointer.abelab.dev"; + +const graphqlWsEndpoint = `${wsOrigin}/graphql-ws`; -const axiosInstance = axios.create({ - baseURL: API_URL, - withCredentials: true, +const rawGraphqlWsClient = createClient({ + url: graphqlWsEndpoint, + lazy: true, + webSocketImpl: WebSocket, }); -export const roomApi = new RoomApi(config, "", axiosInstance); +export const subscribe = < + T = unknown, + V extends Record = Record +>( + { + query, + variables, + }: { + query: TypedDocumentNode; + } & (V extends Record + ? { variables?: V } + : keyof RemoveIndex extends never + ? { variables?: V } + : { variables: V }), + sink: Sink> +) => { + rawGraphqlWsClient.subscribe( + { + query: print(query), + variables, + }, + sink + ); +}; diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index a92c643f..b4eda22f 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -6,7 +6,8 @@ import { } from "@smartpointer-desktop/shared"; import { randomUUID } from "crypto"; -import { roomApi } from "@/api"; +import { request } from "@/api"; +import { graphql } from "@/gql"; import { model } from "@/model"; import { activate, @@ -26,15 +27,24 @@ export const controller = { createRoom: async () => { model.startCreatingRoom(); - const { data } = await roomApi.createRoom(); + const data = await request({ + query: graphql(` + mutation CreateRoom { + createRoom { + id + passcode + } + } + `), + }); - console.log("created room", data); + console.log("created room", data.createRoom); await activate(); - model.createdRoom(data); + model.createdRoom(data.createRoom); - listenRoomSubscription(data.roomId); + listenRoomSubscription(data.createRoom.id); view.tray.update(); await view.window.pointerOverlay.show(); diff --git a/desktop/packages/main/src/generated/http-client/.gitignore b/desktop/packages/main/src/generated/http-client/.gitignore deleted file mode 100644 index 149b5765..00000000 --- a/desktop/packages/main/src/generated/http-client/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -wwwroot/*.js -node_modules -typings -dist diff --git a/desktop/packages/main/src/generated/http-client/.npmignore b/desktop/packages/main/src/generated/http-client/.npmignore deleted file mode 100644 index 999d88df..00000000 --- a/desktop/packages/main/src/generated/http-client/.npmignore +++ /dev/null @@ -1 +0,0 @@ -# empty npmignore to ensure all required files (e.g., in the dist folder) are published by npm \ No newline at end of file diff --git a/desktop/packages/main/src/generated/http-client/.openapi-generator-ignore b/desktop/packages/main/src/generated/http-client/.openapi-generator-ignore deleted file mode 100644 index 7484ee59..00000000 --- a/desktop/packages/main/src/generated/http-client/.openapi-generator-ignore +++ /dev/null @@ -1,23 +0,0 @@ -# OpenAPI Generator Ignore -# Generated by openapi-generator https://github.com/openapitools/openapi-generator - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md diff --git a/desktop/packages/main/src/generated/http-client/.openapi-generator/FILES b/desktop/packages/main/src/generated/http-client/.openapi-generator/FILES deleted file mode 100644 index 16b445ee..00000000 --- a/desktop/packages/main/src/generated/http-client/.openapi-generator/FILES +++ /dev/null @@ -1,9 +0,0 @@ -.gitignore -.npmignore -.openapi-generator-ignore -api.ts -base.ts -common.ts -configuration.ts -git_push.sh -index.ts diff --git a/desktop/packages/main/src/generated/http-client/.openapi-generator/VERSION b/desktop/packages/main/src/generated/http-client/.openapi-generator/VERSION deleted file mode 100644 index 4ac4fded..00000000 --- a/desktop/packages/main/src/generated/http-client/.openapi-generator/VERSION +++ /dev/null @@ -1 +0,0 @@ -6.2.0 \ No newline at end of file diff --git a/desktop/packages/main/src/generated/http-client/api.ts b/desktop/packages/main/src/generated/http-client/api.ts deleted file mode 100644 index 50b91115..00000000 --- a/desktop/packages/main/src/generated/http-client/api.ts +++ /dev/null @@ -1,422 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import { Configuration } from './configuration'; -import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; -// Some imports not used depending on template conditions -// @ts-ignore -import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from './common'; -// @ts-ignore -import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from './base'; - -/** - * アクセストークンレスポンス - * @export - * @interface AccessTokenResponse - */ -export interface AccessTokenResponse { - /** - * トークンタイプ - * @type {string} - * @memberof AccessTokenResponse - */ - 'tokenType': string; - /** - * アクセストークン - * @type {string} - * @memberof AccessTokenResponse - */ - 'accessToken': string; - /** - * TTL - * @type {number} - * @memberof AccessTokenResponse - */ - 'ttl': number; -} -/** - * ルーム入室リクエスト - * @export - * @interface RoomJoinRequest - */ -export interface RoomJoinRequest { - /** - * パスコード - * @type {string} - * @memberof RoomJoinRequest - */ - 'passcode': string; - /** - * ユーザ名 - * @type {string} - * @memberof RoomJoinRequest - */ - 'name': string; -} -/** - * ルームレスポンス - * @export - * @interface RoomResponse - */ -export interface RoomResponse { - /** - * ルームID - * @type {string} - * @memberof RoomResponse - */ - 'roomId': string; - /** - * パスコード - * @type {string} - * @memberof RoomResponse - */ - 'passcode': string; -} - -/** - * HealthCheckApi - axios parameter creator - * @export - */ -export const HealthCheckApiAxiosParamCreator = function (configuration?: Configuration) { - return { - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - health: async (options: AxiosRequestConfig = {}): Promise => { - const localVarPath = `/api/health`; - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - } -}; - -/** - * HealthCheckApi - functional programming interface - * @export - */ -export const HealthCheckApiFp = function(configuration?: Configuration) { - const localVarAxiosParamCreator = HealthCheckApiAxiosParamCreator(configuration) - return { - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async health(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.health(options); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); - }, - } -}; - -/** - * HealthCheckApi - factory interface - * @export - */ -export const HealthCheckApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { - const localVarFp = HealthCheckApiFp(configuration) - return { - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - health(options?: any): AxiosPromise { - return localVarFp.health(options).then((request) => request(axios, basePath)); - }, - }; -}; - -/** - * HealthCheckApi - object-oriented interface - * @export - * @class HealthCheckApi - * @extends {BaseAPI} - */ -export class HealthCheckApi extends BaseAPI { - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof HealthCheckApi - */ - public health(options?: AxiosRequestConfig) { - return HealthCheckApiFp(this.configuration).health(options).then((request) => request(this.axios, this.basePath)); - } -} - - -/** - * RoomApi - axios parameter creator - * @export - */ -export const RoomApiAxiosParamCreator = function (configuration?: Configuration) { - return { - /** - * ルーム作成API - * @summary ルーム作成API - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - createRoom: async (options: AxiosRequestConfig = {}): Promise => { - const localVarPath = `/api/rooms`; - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * ルーム削除API - * @summary ルーム削除API - * @param {string} roomId ルームID - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - deleteRoom: async (roomId: string, options: AxiosRequestConfig = {}): Promise => { - // verify required parameter 'roomId' is not null or undefined - assertParamExists('deleteRoom', 'roomId', roomId) - const localVarPath = `/api/rooms/{room_id}` - .replace(`{${"room_id"}}`, encodeURIComponent(String(roomId))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * ルーム入室API - * @summary ルーム入室API - * @param {string} roomId ルームID - * @param {RoomJoinRequest} roomJoinRequest ルーム入室リクエスト - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - joinRoom: async (roomId: string, roomJoinRequest: RoomJoinRequest, options: AxiosRequestConfig = {}): Promise => { - // verify required parameter 'roomId' is not null or undefined - assertParamExists('joinRoom', 'roomId', roomId) - // verify required parameter 'roomJoinRequest' is not null or undefined - assertParamExists('joinRoom', 'roomJoinRequest', roomJoinRequest) - const localVarPath = `/api/rooms/{room_id}/join` - .replace(`{${"room_id"}}`, encodeURIComponent(String(roomId))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - - - localVarHeaderParameter['Content-Type'] = 'application/json'; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(roomJoinRequest, localVarRequestOptions, configuration) - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - } -}; - -/** - * RoomApi - functional programming interface - * @export - */ -export const RoomApiFp = function(configuration?: Configuration) { - const localVarAxiosParamCreator = RoomApiAxiosParamCreator(configuration) - return { - /** - * ルーム作成API - * @summary ルーム作成API - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async createRoom(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.createRoom(options); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); - }, - /** - * ルーム削除API - * @summary ルーム削除API - * @param {string} roomId ルームID - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async deleteRoom(roomId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.deleteRoom(roomId, options); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); - }, - /** - * ルーム入室API - * @summary ルーム入室API - * @param {string} roomId ルームID - * @param {RoomJoinRequest} roomJoinRequest ルーム入室リクエスト - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async joinRoom(roomId: string, roomJoinRequest: RoomJoinRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.joinRoom(roomId, roomJoinRequest, options); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); - }, - } -}; - -/** - * RoomApi - factory interface - * @export - */ -export const RoomApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { - const localVarFp = RoomApiFp(configuration) - return { - /** - * ルーム作成API - * @summary ルーム作成API - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - createRoom(options?: any): AxiosPromise { - return localVarFp.createRoom(options).then((request) => request(axios, basePath)); - }, - /** - * ルーム削除API - * @summary ルーム削除API - * @param {string} roomId ルームID - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - deleteRoom(roomId: string, options?: any): AxiosPromise { - return localVarFp.deleteRoom(roomId, options).then((request) => request(axios, basePath)); - }, - /** - * ルーム入室API - * @summary ルーム入室API - * @param {string} roomId ルームID - * @param {RoomJoinRequest} roomJoinRequest ルーム入室リクエスト - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - joinRoom(roomId: string, roomJoinRequest: RoomJoinRequest, options?: any): AxiosPromise { - return localVarFp.joinRoom(roomId, roomJoinRequest, options).then((request) => request(axios, basePath)); - }, - }; -}; - -/** - * RoomApi - object-oriented interface - * @export - * @class RoomApi - * @extends {BaseAPI} - */ -export class RoomApi extends BaseAPI { - /** - * ルーム作成API - * @summary ルーム作成API - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof RoomApi - */ - public createRoom(options?: AxiosRequestConfig) { - return RoomApiFp(this.configuration).createRoom(options).then((request) => request(this.axios, this.basePath)); - } - - /** - * ルーム削除API - * @summary ルーム削除API - * @param {string} roomId ルームID - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof RoomApi - */ - public deleteRoom(roomId: string, options?: AxiosRequestConfig) { - return RoomApiFp(this.configuration).deleteRoom(roomId, options).then((request) => request(this.axios, this.basePath)); - } - - /** - * ルーム入室API - * @summary ルーム入室API - * @param {string} roomId ルームID - * @param {RoomJoinRequest} roomJoinRequest ルーム入室リクエスト - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof RoomApi - */ - public joinRoom(roomId: string, roomJoinRequest: RoomJoinRequest, options?: AxiosRequestConfig) { - return RoomApiFp(this.configuration).joinRoom(roomId, roomJoinRequest, options).then((request) => request(this.axios, this.basePath)); - } -} - - diff --git a/desktop/packages/main/src/generated/http-client/base.ts b/desktop/packages/main/src/generated/http-client/base.ts deleted file mode 100644 index 29c02ed1..00000000 --- a/desktop/packages/main/src/generated/http-client/base.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import { Configuration } from "./configuration"; -// Some imports not used depending on template conditions -// @ts-ignore -import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; - -export const BASE_PATH = "http://localhost:8080".replace(/\/+$/, ""); - -/** - * - * @export - */ -export const COLLECTION_FORMATS = { - csv: ",", - ssv: " ", - tsv: "\t", - pipes: "|", -}; - -/** - * - * @export - * @interface RequestArgs - */ -export interface RequestArgs { - url: string; - options: AxiosRequestConfig; -} - -/** - * - * @export - * @class BaseAPI - */ -export class BaseAPI { - protected configuration: Configuration | undefined; - - constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) { - if (configuration) { - this.configuration = configuration; - this.basePath = configuration.basePath || this.basePath; - } - } -}; - -/** - * - * @export - * @class RequiredError - * @extends {Error} - */ -export class RequiredError extends Error { - name: "RequiredError" = "RequiredError"; - constructor(public field: string, msg?: string) { - super(msg); - } -} diff --git a/desktop/packages/main/src/generated/http-client/common.ts b/desktop/packages/main/src/generated/http-client/common.ts deleted file mode 100644 index a2d70b63..00000000 --- a/desktop/packages/main/src/generated/http-client/common.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import { Configuration } from "./configuration"; -import { RequiredError, RequestArgs } from "./base"; -import { AxiosInstance, AxiosResponse } from 'axios'; - -/** - * - * @export - */ -export const DUMMY_BASE_URL = 'https://example.com' - -/** - * - * @throws {RequiredError} - * @export - */ -export const assertParamExists = function (functionName: string, paramName: string, paramValue: unknown) { - if (paramValue === null || paramValue === undefined) { - throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`); - } -} - -/** - * - * @export - */ -export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) { - if (configuration && configuration.apiKey) { - const localVarApiKeyValue = typeof configuration.apiKey === 'function' - ? await configuration.apiKey(keyParamName) - : await configuration.apiKey; - object[keyParamName] = localVarApiKeyValue; - } -} - -/** - * - * @export - */ -export const setBasicAuthToObject = function (object: any, configuration?: Configuration) { - if (configuration && (configuration.username || configuration.password)) { - object["auth"] = { username: configuration.username, password: configuration.password }; - } -} - -/** - * - * @export - */ -export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) { - if (configuration && configuration.accessToken) { - const accessToken = typeof configuration.accessToken === 'function' - ? await configuration.accessToken() - : await configuration.accessToken; - object["Authorization"] = "Bearer " + accessToken; - } -} - -/** - * - * @export - */ -export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) { - if (configuration && configuration.accessToken) { - const localVarAccessTokenValue = typeof configuration.accessToken === 'function' - ? await configuration.accessToken(name, scopes) - : await configuration.accessToken; - object["Authorization"] = "Bearer " + localVarAccessTokenValue; - } -} - -function setFlattenedQueryParams(urlSearchParams: URLSearchParams, parameter: any, key: string = ""): void { - if (typeof parameter === "object") { - if (Array.isArray(parameter)) { - (parameter as any[]).forEach(item => setFlattenedQueryParams(urlSearchParams, item, key)); - } - else { - Object.keys(parameter).forEach(currentKey => - setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`) - ); - } - } - else { - if (urlSearchParams.has(key)) { - urlSearchParams.append(key, parameter); - } - else { - urlSearchParams.set(key, parameter); - } - } -} - -/** - * - * @export - */ -export const setSearchParams = function (url: URL, ...objects: any[]) { - const searchParams = new URLSearchParams(url.search); - setFlattenedQueryParams(searchParams, objects); - url.search = searchParams.toString(); -} - -/** - * - * @export - */ -export const serializeDataIfNeeded = function (value: any, requestOptions: any, configuration?: Configuration) { - const nonString = typeof value !== 'string'; - const needsSerialization = nonString && configuration && configuration.isJsonMime - ? configuration.isJsonMime(requestOptions.headers['Content-Type']) - : nonString; - return needsSerialization - ? JSON.stringify(value !== undefined ? value : {}) - : (value || ""); -} - -/** - * - * @export - */ -export const toPathString = function (url: URL) { - return url.pathname + url.search + url.hash -} - -/** - * - * @export - */ -export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) { - return >(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { - const axiosRequestArgs = {...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url}; - return axios.request(axiosRequestArgs); - }; -} diff --git a/desktop/packages/main/src/generated/http-client/configuration.ts b/desktop/packages/main/src/generated/http-client/configuration.ts deleted file mode 100644 index cbd7fe1c..00000000 --- a/desktop/packages/main/src/generated/http-client/configuration.ts +++ /dev/null @@ -1,101 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -export interface ConfigurationParameters { - apiKey?: string | Promise | ((name: string) => string) | ((name: string) => Promise); - username?: string; - password?: string; - accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise); - basePath?: string; - baseOptions?: any; - formDataCtor?: new () => any; -} - -export class Configuration { - /** - * parameter for apiKey security - * @param name security name - * @memberof Configuration - */ - apiKey?: string | Promise | ((name: string) => string) | ((name: string) => Promise); - /** - * parameter for basic security - * - * @type {string} - * @memberof Configuration - */ - username?: string; - /** - * parameter for basic security - * - * @type {string} - * @memberof Configuration - */ - password?: string; - /** - * parameter for oauth2 security - * @param name security name - * @param scopes oauth2 scope - * @memberof Configuration - */ - accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise); - /** - * override base path - * - * @type {string} - * @memberof Configuration - */ - basePath?: string; - /** - * base options for axios calls - * - * @type {any} - * @memberof Configuration - */ - baseOptions?: any; - /** - * The FormData constructor that will be used to create multipart form data - * requests. You can inject this here so that execution environments that - * do not support the FormData class can still run the generated client. - * - * @type {new () => FormData} - */ - formDataCtor?: new () => any; - - constructor(param: ConfigurationParameters = {}) { - this.apiKey = param.apiKey; - this.username = param.username; - this.password = param.password; - this.accessToken = param.accessToken; - this.basePath = param.basePath; - this.baseOptions = param.baseOptions; - this.formDataCtor = param.formDataCtor; - } - - /** - * Check if the given MIME is a JSON MIME. - * JSON MIME examples: - * application/json - * application/json; charset=UTF8 - * APPLICATION/JSON - * application/vnd.company+json - * @param mime - MIME (Multipurpose Internet Mail Extensions) - * @return True if the given MIME is JSON, false otherwise. - */ - public isJsonMime(mime: string): boolean { - const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i'); - return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json'); - } -} diff --git a/desktop/packages/main/src/generated/http-client/git_push.sh b/desktop/packages/main/src/generated/http-client/git_push.sh deleted file mode 100644 index f53a75d4..00000000 --- a/desktop/packages/main/src/generated/http-client/git_push.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh -# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ -# -# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" - -git_user_id=$1 -git_repo_id=$2 -release_note=$3 -git_host=$4 - -if [ "$git_host" = "" ]; then - git_host="github.com" - echo "[INFO] No command line input provided. Set \$git_host to $git_host" -fi - -if [ "$git_user_id" = "" ]; then - git_user_id="GIT_USER_ID" - echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" -fi - -if [ "$git_repo_id" = "" ]; then - git_repo_id="GIT_REPO_ID" - echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" -fi - -if [ "$release_note" = "" ]; then - release_note="Minor update" - echo "[INFO] No command line input provided. Set \$release_note to $release_note" -fi - -# Initialize the local directory as a Git repository -git init - -# Adds the files in the local repository and stages them for commit. -git add . - -# Commits the tracked changes and prepares them to be pushed to a remote repository. -git commit -m "$release_note" - -# Sets the new remote -git_remote=$(git remote) -if [ "$git_remote" = "" ]; then # git remote not defined - - if [ "$GIT_TOKEN" = "" ]; then - echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." - git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git - else - git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git - fi - -fi - -git pull origin master - -# Pushes (Forces) the changes in the local repository up to the remote repository -echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" -git push origin master 2>&1 | grep -v 'To https' diff --git a/desktop/packages/main/src/generated/http-client/index.ts b/desktop/packages/main/src/generated/http-client/index.ts deleted file mode 100644 index abe3f3be..00000000 --- a/desktop/packages/main/src/generated/http-client/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -export * from "./api"; -export * from "./configuration"; - diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts index c63fcfe2..22cb79e7 100644 --- a/desktop/packages/main/src/gql/gql.ts +++ b/desktop/packages/main/src/gql/gql.ts @@ -2,7 +2,12 @@ import * as types from './graphql'; import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; -const documents = []; +const documents = { + "\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n ": types.CreateRoomDocument, +}; + +export function graphql(source: "\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "): (typeof documents)["\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "]; + export function graphql(source: string): unknown; export function graphql(source: string) { return (documents as any)[source] ?? {}; diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index 65a38474..f7abe354 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -1,4 +1,5 @@ /* eslint-disable */ +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; export type Maybe = T | null; export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; @@ -206,3 +207,11 @@ export type Users = { /** ユーザリスト */ users: Array; }; + +export type CreateRoomMutationVariables = Exact<{ [key: string]: never; }>; + + +export type CreateRoomMutation = { __typename?: 'Mutation', createRoom: { __typename?: 'Room', id: string, passcode: string } }; + + +export const CreateRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"passcode"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index 990b51b9..a09c87e8 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -5,9 +5,10 @@ import { User, } from "@smartpointer-desktop/shared"; -import { RoomResponse } from "./generated/http-client"; - -export type Room = RoomResponse; +export type Room = { + id: string; + passcode: string; +}; export type ActivePointer = { user: User; diff --git a/desktop/packages/main/src/view/window/inviteLink.ts b/desktop/packages/main/src/view/window/inviteLink.ts index 608bdd22..62b5892b 100644 --- a/desktop/packages/main/src/view/window/inviteLink.ts +++ b/desktop/packages/main/src/view/window/inviteLink.ts @@ -24,7 +24,7 @@ export const inviteLink = { }); await loadFile(inviteLinkWindow, "link.html", { - roomId: state.room.roomId, + roomId: state.room.id, passcode: state.room.passcode, origin: process.env["USE_DEV_BACKEND"] === "true" diff --git a/desktop/packages/main/tsconfig.json b/desktop/packages/main/tsconfig.json index 93a42169..d48ceb5d 100644 --- a/desktop/packages/main/tsconfig.json +++ b/desktop/packages/main/tsconfig.json @@ -7,7 +7,6 @@ "src/view/window/.ts" ], "exclude": [ - "src/generated/**/*", "src/gql/**/*" ], "compilerOptions": { From db9b3683a27df3a5091f604f4d1ee16db68fb1b9 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 13:21:01 +0900 Subject: [PATCH 082/189] Support greater than Java 11 --- app/build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 8877c7f2..2a89b2e4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -132,6 +132,9 @@ dependencies { implementation "commons-net:commons-net:3.8.0" implementation "commons-validator:commons-validator:1.7" implementation "net.rakugakibox.util:yaml-resource-bundle:1.2" + + // support greater than java 11 + implementation "javax.xml.bind:jaxb-api:2.3.1" } tasks.withType(Test) { From 06dddf92ab199e6ba37739281e4713ff1fbbce79 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 12:52:59 +0900 Subject: [PATCH 083/189] join room with GraphQL instead of REST --- app/src/main/pointer/package-lock.json | 1 + app/src/main/pointer/package.json | 1 + app/src/main/pointer/src/api.ts | 64 ++- .../pointer/src/components/JoinRoomForm.tsx | 33 +- .../src/generated/http-client/.gitignore | 4 - .../src/generated/http-client/.npmignore | 1 - .../http-client/.openapi-generator-ignore | 23 - .../http-client/.openapi-generator/FILES | 9 - .../http-client/.openapi-generator/VERSION | 1 - .../pointer/src/generated/http-client/api.ts | 476 ------------------ .../pointer/src/generated/http-client/base.ts | 78 --- .../src/generated/http-client/common.ts | 198 -------- .../generated/http-client/configuration.ts | 123 ----- .../src/generated/http-client/git_push.sh | 57 --- .../src/generated/http-client/index.ts | 16 - app/src/main/pointer/src/gql/gql.ts | 7 +- app/src/main/pointer/src/gql/graphql.ts | 13 + app/src/main/pointer/src/types/AuthData.ts | 4 +- 18 files changed, 101 insertions(+), 1008 deletions(-) delete mode 100644 app/src/main/pointer/src/generated/http-client/.gitignore delete mode 100644 app/src/main/pointer/src/generated/http-client/.npmignore delete mode 100644 app/src/main/pointer/src/generated/http-client/.openapi-generator-ignore delete mode 100644 app/src/main/pointer/src/generated/http-client/.openapi-generator/FILES delete mode 100644 app/src/main/pointer/src/generated/http-client/.openapi-generator/VERSION delete mode 100644 app/src/main/pointer/src/generated/http-client/api.ts delete mode 100644 app/src/main/pointer/src/generated/http-client/base.ts delete mode 100644 app/src/main/pointer/src/generated/http-client/common.ts delete mode 100644 app/src/main/pointer/src/generated/http-client/configuration.ts delete mode 100644 app/src/main/pointer/src/generated/http-client/git_push.sh delete mode 100644 app/src/main/pointer/src/generated/http-client/index.ts diff --git a/app/src/main/pointer/package-lock.json b/app/src/main/pointer/package-lock.json index edb03f9c..347395fc 100644 --- a/app/src/main/pointer/package-lock.json +++ b/app/src/main/pointer/package-lock.json @@ -25,6 +25,7 @@ "devDependencies": { "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", + "@graphql-typed-document-node/core": "^3.1.1", "@openapitools/openapi-generator-cli": "2.5.2", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", diff --git a/app/src/main/pointer/package.json b/app/src/main/pointer/package.json index 4ecd7fc7..1f21985f 100644 --- a/app/src/main/pointer/package.json +++ b/app/src/main/pointer/package.json @@ -33,6 +33,7 @@ "devDependencies": { "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", + "@graphql-typed-document-node/core": "^3.1.1", "@openapitools/openapi-generator-cli": "2.5.2", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", diff --git a/app/src/main/pointer/src/api.ts b/app/src/main/pointer/src/api.ts index bab41870..f5c96cb3 100644 --- a/app/src/main/pointer/src/api.ts +++ b/app/src/main/pointer/src/api.ts @@ -1,16 +1,60 @@ -import axios from "axios"; +import type { TypedDocumentNode } from "@graphql-typed-document-node/core"; +import { ExecutionResult, print } from "graphql"; +import { GraphQLClient } from "graphql-request"; +import { RemoveIndex, RequestOptions } from "graphql-request/dist/types"; +import { createClient, Sink } from "graphql-ws"; -import { Configuration, RoomApi } from "./generated/http-client"; +const graphqlHttpEndpoint = `${location.origin}/graphql`; -const API_URL = location.origin; +const graphqlHttpClient = new GraphQLClient(graphqlHttpEndpoint); -const config = new Configuration({ - basePath: API_URL, -}); +export const request = < + T = unknown, + V extends Record = Record +>({ + query, + variables, +}: { + query: TypedDocumentNode; +} & (V extends Record + ? { variables?: V } + : keyof RemoveIndex extends never + ? { variables?: V } + : { variables: V })): Promise => { + return graphqlHttpClient.request({ + document: query, + variables: variables, + } as RequestOptions); +}; + +const graphqlWsEndpoint = `wss://${location.host}/graphql-ws`; -const axiosInstance = axios.create({ - baseURL: API_URL, - withCredentials: true, +const rawGraphqlWsClient = createClient({ + url: graphqlWsEndpoint, + lazy: true, }); -export const roomApi = new RoomApi(config, "", axiosInstance); +export const subscribe = < + T = unknown, + V extends Record = Record +>( + { + query, + variables, + }: { + query: TypedDocumentNode; + } & (V extends Record + ? { variables?: V } + : keyof RemoveIndex extends never + ? { variables?: V } + : { variables: V }), + sink: Sink> +) => { + rawGraphqlWsClient.subscribe( + { + query: print(query), + variables, + }, + sink + ); +}; diff --git a/app/src/main/pointer/src/components/JoinRoomForm.tsx b/app/src/main/pointer/src/components/JoinRoomForm.tsx index 8065d61f..fc691e2a 100644 --- a/app/src/main/pointer/src/components/JoinRoomForm.tsx +++ b/app/src/main/pointer/src/components/JoinRoomForm.tsx @@ -11,11 +11,12 @@ import { PinInputField, Flex, } from "@chakra-ui/react"; -import { AxiosError } from "axios"; +import { ClientError } from "graphql-request"; import { FC } from "react"; import { Controller, useForm } from "react-hook-form"; -import { roomApi } from "@/api"; +import { request } from "@/api"; +import { graphql } from "@/gql"; import { activate } from "@/stomp"; import { AuthData } from "@/types/AuthData"; @@ -51,16 +52,32 @@ export const JoinRoomForm: FC = ({ onSubmit: onSubmitProps }) => { const onSubmit = async (values: FormValues) => { try { - const { data } = await roomApi.joinRoom(values.roomId, { - passcode: values.passcode, - name: values.userName, + const data = await request({ + query: graphql(` + mutation JoinRoom( + $roomId: ID! + $passcode: String! + $userName: String! + ) { + joinRoom( + roomId: $roomId + passcode: $passcode + userName: $userName + ) { + tokenType + accessToken + ttl + } + } + `), + variables: values, }); await activate(); localStorage.setItem(localStorageKey, values.userName); onSubmitProps({ - ...data, + ...data.joinRoom, userName: values.userName, roomId: values.roomId, }); @@ -72,10 +89,10 @@ export const JoinRoomForm: FC = ({ onSubmit: onSubmitProps }) => { isClosable: true, }); } catch (error) { - if (error instanceof AxiosError) { + if (error instanceof ClientError) { toast({ title: "ログインに失敗しました。", - description: error.response?.data.message, + description: error.response.errors?.map((e) => e.message).join(", "), status: "error", duration: 3000, isClosable: true, diff --git a/app/src/main/pointer/src/generated/http-client/.gitignore b/app/src/main/pointer/src/generated/http-client/.gitignore deleted file mode 100644 index 149b5765..00000000 --- a/app/src/main/pointer/src/generated/http-client/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -wwwroot/*.js -node_modules -typings -dist diff --git a/app/src/main/pointer/src/generated/http-client/.npmignore b/app/src/main/pointer/src/generated/http-client/.npmignore deleted file mode 100644 index 999d88df..00000000 --- a/app/src/main/pointer/src/generated/http-client/.npmignore +++ /dev/null @@ -1 +0,0 @@ -# empty npmignore to ensure all required files (e.g., in the dist folder) are published by npm \ No newline at end of file diff --git a/app/src/main/pointer/src/generated/http-client/.openapi-generator-ignore b/app/src/main/pointer/src/generated/http-client/.openapi-generator-ignore deleted file mode 100644 index 7484ee59..00000000 --- a/app/src/main/pointer/src/generated/http-client/.openapi-generator-ignore +++ /dev/null @@ -1,23 +0,0 @@ -# OpenAPI Generator Ignore -# Generated by openapi-generator https://github.com/openapitools/openapi-generator - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md diff --git a/app/src/main/pointer/src/generated/http-client/.openapi-generator/FILES b/app/src/main/pointer/src/generated/http-client/.openapi-generator/FILES deleted file mode 100644 index 16b445ee..00000000 --- a/app/src/main/pointer/src/generated/http-client/.openapi-generator/FILES +++ /dev/null @@ -1,9 +0,0 @@ -.gitignore -.npmignore -.openapi-generator-ignore -api.ts -base.ts -common.ts -configuration.ts -git_push.sh -index.ts diff --git a/app/src/main/pointer/src/generated/http-client/.openapi-generator/VERSION b/app/src/main/pointer/src/generated/http-client/.openapi-generator/VERSION deleted file mode 100644 index 4ac4fded..00000000 --- a/app/src/main/pointer/src/generated/http-client/.openapi-generator/VERSION +++ /dev/null @@ -1 +0,0 @@ -6.2.0 \ No newline at end of file diff --git a/app/src/main/pointer/src/generated/http-client/api.ts b/app/src/main/pointer/src/generated/http-client/api.ts deleted file mode 100644 index 76b2bd18..00000000 --- a/app/src/main/pointer/src/generated/http-client/api.ts +++ /dev/null @@ -1,476 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -import { Configuration } from "./configuration"; -import globalAxios, { - AxiosPromise, - AxiosInstance, - AxiosRequestConfig, -} from "axios"; -// Some imports not used depending on template conditions -// @ts-ignore -import { - DUMMY_BASE_URL, - assertParamExists, - setApiKeyToObject, - setBasicAuthToObject, - setBearerAuthToObject, - setOAuthToObject, - setSearchParams, - serializeDataIfNeeded, - toPathString, - createRequestFunction, -} from "./common"; -// @ts-ignore -import { - BASE_PATH, - COLLECTION_FORMATS, - RequestArgs, - BaseAPI, - RequiredError, -} from "./base"; - -/** - * アクセストークンレスポンス - * @export - * @interface AccessTokenResponse - */ -export interface AccessTokenResponse { - /** - * トークンタイプ - * @type {string} - * @memberof AccessTokenResponse - */ - tokenType: string; - /** - * アクセストークン - * @type {string} - * @memberof AccessTokenResponse - */ - accessToken: string; - /** - * TTL - * @type {number} - * @memberof AccessTokenResponse - */ - ttl: number; -} -/** - * ルーム入室リクエスト - * @export - * @interface RoomJoinRequest - */ -export interface RoomJoinRequest { - /** - * パスコード - * @type {string} - * @memberof RoomJoinRequest - */ - passcode: string; - /** - * ユーザ名 - * @type {string} - * @memberof RoomJoinRequest - */ - name: string; -} -/** - * ルームレスポンス - * @export - * @interface RoomResponse - */ -export interface RoomResponse { - /** - * ルームID - * @type {string} - * @memberof RoomResponse - */ - roomId: string; - /** - * パスコード - * @type {string} - * @memberof RoomResponse - */ - passcode: string; -} - -/** - * HealthCheckApi - axios parameter creator - * @export - */ -export const HealthCheckApiAxiosParamCreator = function ( - configuration?: Configuration -) { - return { - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - health: async (options: AxiosRequestConfig = {}): Promise => { - const localVarPath = `/api/health`; - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - }; -}; - -/** - * HealthCheckApi - functional programming interface - * @export - */ -export const HealthCheckApiFp = function (configuration?: Configuration) { - const localVarAxiosParamCreator = - HealthCheckApiAxiosParamCreator(configuration); - return { - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async health( - options?: AxiosRequestConfig - ): Promise< - (axios?: AxiosInstance, basePath?: string) => AxiosPromise - > { - const localVarAxiosArgs = await localVarAxiosParamCreator.health(options); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); - }, - }; -}; - -/** - * HealthCheckApi - factory interface - * @export - */ -export const HealthCheckApiFactory = function ( - configuration?: Configuration, - basePath?: string, - axios?: AxiosInstance -) { - const localVarFp = HealthCheckApiFp(configuration); - return { - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - health(options?: any): AxiosPromise { - return localVarFp - .health(options) - .then((request) => request(axios, basePath)); - }, - }; -}; - -/** - * HealthCheckApi - object-oriented interface - * @export - * @class HealthCheckApi - * @extends {BaseAPI} - */ -export class HealthCheckApi extends BaseAPI { - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof HealthCheckApi - */ - public health(options?: AxiosRequestConfig) { - return HealthCheckApiFp(this.configuration) - .health(options) - .then((request) => request(this.axios, this.basePath)); - } -} - -/** - * RoomApi - axios parameter creator - * @export - */ -export const RoomApiAxiosParamCreator = function ( - configuration?: Configuration -) { - return { - /** - * ルーム作成API - * @summary ルーム作成API - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - createRoom: async ( - options: AxiosRequestConfig = {} - ): Promise => { - const localVarPath = `/api/rooms`; - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { - method: "POST", - ...baseOptions, - ...options, - }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * ルーム入室API - * @summary ルーム入室API - * @param {string} roomId ルームID - * @param {RoomJoinRequest} roomJoinRequest ルーム入室リクエスト - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - joinRoom: async ( - roomId: string, - roomJoinRequest: RoomJoinRequest, - options: AxiosRequestConfig = {} - ): Promise => { - // verify required parameter 'roomId' is not null or undefined - assertParamExists("joinRoom", "roomId", roomId); - // verify required parameter 'roomJoinRequest' is not null or undefined - assertParamExists("joinRoom", "roomJoinRequest", roomJoinRequest); - const localVarPath = `/api/rooms/{room_id}/join`.replace( - `{${"room_id"}}`, - encodeURIComponent(String(roomId)) - ); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { - method: "POST", - ...baseOptions, - ...options, - }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - localVarHeaderParameter["Content-Type"] = "application/json"; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - localVarRequestOptions.data = serializeDataIfNeeded( - roomJoinRequest, - localVarRequestOptions, - configuration - ); - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - }; -}; - -/** - * RoomApi - functional programming interface - * @export - */ -export const RoomApiFp = function (configuration?: Configuration) { - const localVarAxiosParamCreator = RoomApiAxiosParamCreator(configuration); - return { - /** - * ルーム作成API - * @summary ルーム作成API - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async createRoom( - options?: AxiosRequestConfig - ): Promise< - (axios?: AxiosInstance, basePath?: string) => AxiosPromise - > { - const localVarAxiosArgs = await localVarAxiosParamCreator.createRoom( - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); - }, - /** - * ルーム入室API - * @summary ルーム入室API - * @param {string} roomId ルームID - * @param {RoomJoinRequest} roomJoinRequest ルーム入室リクエスト - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async joinRoom( - roomId: string, - roomJoinRequest: RoomJoinRequest, - options?: AxiosRequestConfig - ): Promise< - ( - axios?: AxiosInstance, - basePath?: string - ) => AxiosPromise - > { - const localVarAxiosArgs = await localVarAxiosParamCreator.joinRoom( - roomId, - roomJoinRequest, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); - }, - }; -}; - -/** - * RoomApi - factory interface - * @export - */ -export const RoomApiFactory = function ( - configuration?: Configuration, - basePath?: string, - axios?: AxiosInstance -) { - const localVarFp = RoomApiFp(configuration); - return { - /** - * ルーム作成API - * @summary ルーム作成API - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - createRoom(options?: any): AxiosPromise { - return localVarFp - .createRoom(options) - .then((request) => request(axios, basePath)); - }, - /** - * ルーム入室API - * @summary ルーム入室API - * @param {string} roomId ルームID - * @param {RoomJoinRequest} roomJoinRequest ルーム入室リクエスト - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - joinRoom( - roomId: string, - roomJoinRequest: RoomJoinRequest, - options?: any - ): AxiosPromise { - return localVarFp - .joinRoom(roomId, roomJoinRequest, options) - .then((request) => request(axios, basePath)); - }, - }; -}; - -/** - * RoomApi - object-oriented interface - * @export - * @class RoomApi - * @extends {BaseAPI} - */ -export class RoomApi extends BaseAPI { - /** - * ルーム作成API - * @summary ルーム作成API - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof RoomApi - */ - public createRoom(options?: AxiosRequestConfig) { - return RoomApiFp(this.configuration) - .createRoom(options) - .then((request) => request(this.axios, this.basePath)); - } - - /** - * ルーム入室API - * @summary ルーム入室API - * @param {string} roomId ルームID - * @param {RoomJoinRequest} roomJoinRequest ルーム入室リクエスト - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof RoomApi - */ - public joinRoom( - roomId: string, - roomJoinRequest: RoomJoinRequest, - options?: AxiosRequestConfig - ) { - return RoomApiFp(this.configuration) - .joinRoom(roomId, roomJoinRequest, options) - .then((request) => request(this.axios, this.basePath)); - } -} diff --git a/app/src/main/pointer/src/generated/http-client/base.ts b/app/src/main/pointer/src/generated/http-client/base.ts deleted file mode 100644 index 02afd188..00000000 --- a/app/src/main/pointer/src/generated/http-client/base.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -import { Configuration } from "./configuration"; -// Some imports not used depending on template conditions -// @ts-ignore -import globalAxios, { - AxiosPromise, - AxiosInstance, - AxiosRequestConfig, -} from "axios"; - -export const BASE_PATH = "http://localhost:8080".replace(/\/+$/, ""); - -/** - * - * @export - */ -export const COLLECTION_FORMATS = { - csv: ",", - ssv: " ", - tsv: "\t", - pipes: "|", -}; - -/** - * - * @export - * @interface RequestArgs - */ -export interface RequestArgs { - url: string; - options: AxiosRequestConfig; -} - -/** - * - * @export - * @class BaseAPI - */ -export class BaseAPI { - protected configuration: Configuration | undefined; - - constructor( - configuration?: Configuration, - protected basePath: string = BASE_PATH, - protected axios: AxiosInstance = globalAxios - ) { - if (configuration) { - this.configuration = configuration; - this.basePath = configuration.basePath || this.basePath; - } - } -} - -/** - * - * @export - * @class RequiredError - * @extends {Error} - */ -export class RequiredError extends Error { - name: "RequiredError" = "RequiredError"; - constructor(public field: string, msg?: string) { - super(msg); - } -} diff --git a/app/src/main/pointer/src/generated/http-client/common.ts b/app/src/main/pointer/src/generated/http-client/common.ts deleted file mode 100644 index 7e316d57..00000000 --- a/app/src/main/pointer/src/generated/http-client/common.ts +++ /dev/null @@ -1,198 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -import { Configuration } from "./configuration"; -import { RequiredError, RequestArgs } from "./base"; -import { AxiosInstance, AxiosResponse } from "axios"; - -/** - * - * @export - */ -export const DUMMY_BASE_URL = "https://example.com"; - -/** - * - * @throws {RequiredError} - * @export - */ -export const assertParamExists = function ( - functionName: string, - paramName: string, - paramValue: unknown -) { - if (paramValue === null || paramValue === undefined) { - throw new RequiredError( - paramName, - `Required parameter ${paramName} was null or undefined when calling ${functionName}.` - ); - } -}; - -/** - * - * @export - */ -export const setApiKeyToObject = async function ( - object: any, - keyParamName: string, - configuration?: Configuration -) { - if (configuration && configuration.apiKey) { - const localVarApiKeyValue = - typeof configuration.apiKey === "function" - ? await configuration.apiKey(keyParamName) - : await configuration.apiKey; - object[keyParamName] = localVarApiKeyValue; - } -}; - -/** - * - * @export - */ -export const setBasicAuthToObject = function ( - object: any, - configuration?: Configuration -) { - if (configuration && (configuration.username || configuration.password)) { - object["auth"] = { - username: configuration.username, - password: configuration.password, - }; - } -}; - -/** - * - * @export - */ -export const setBearerAuthToObject = async function ( - object: any, - configuration?: Configuration -) { - if (configuration && configuration.accessToken) { - const accessToken = - typeof configuration.accessToken === "function" - ? await configuration.accessToken() - : await configuration.accessToken; - object["Authorization"] = "Bearer " + accessToken; - } -}; - -/** - * - * @export - */ -export const setOAuthToObject = async function ( - object: any, - name: string, - scopes: string[], - configuration?: Configuration -) { - if (configuration && configuration.accessToken) { - const localVarAccessTokenValue = - typeof configuration.accessToken === "function" - ? await configuration.accessToken(name, scopes) - : await configuration.accessToken; - object["Authorization"] = "Bearer " + localVarAccessTokenValue; - } -}; - -function setFlattenedQueryParams( - urlSearchParams: URLSearchParams, - parameter: any, - key: string = "" -): void { - if (typeof parameter === "object") { - if (Array.isArray(parameter)) { - (parameter as any[]).forEach((item) => - setFlattenedQueryParams(urlSearchParams, item, key) - ); - } else { - Object.keys(parameter).forEach((currentKey) => - setFlattenedQueryParams( - urlSearchParams, - parameter[currentKey], - `${key}${key !== "" ? "." : ""}${currentKey}` - ) - ); - } - } else { - if (urlSearchParams.has(key)) { - urlSearchParams.append(key, parameter); - } else { - urlSearchParams.set(key, parameter); - } - } -} - -/** - * - * @export - */ -export const setSearchParams = function (url: URL, ...objects: any[]) { - const searchParams = new URLSearchParams(url.search); - setFlattenedQueryParams(searchParams, objects); - url.search = searchParams.toString(); -}; - -/** - * - * @export - */ -export const serializeDataIfNeeded = function ( - value: any, - requestOptions: any, - configuration?: Configuration -) { - const nonString = typeof value !== "string"; - const needsSerialization = - nonString && configuration && configuration.isJsonMime - ? configuration.isJsonMime(requestOptions.headers["Content-Type"]) - : nonString; - return needsSerialization - ? JSON.stringify(value !== undefined ? value : {}) - : value || ""; -}; - -/** - * - * @export - */ -export const toPathString = function (url: URL) { - return url.pathname + url.search + url.hash; -}; - -/** - * - * @export - */ -export const createRequestFunction = function ( - axiosArgs: RequestArgs, - globalAxios: AxiosInstance, - BASE_PATH: string, - configuration?: Configuration -) { - return >( - axios: AxiosInstance = globalAxios, - basePath: string = BASE_PATH - ) => { - const axiosRequestArgs = { - ...axiosArgs.options, - url: (configuration?.basePath || basePath) + axiosArgs.url, - }; - return axios.request(axiosRequestArgs); - }; -}; diff --git a/app/src/main/pointer/src/generated/http-client/configuration.ts b/app/src/main/pointer/src/generated/http-client/configuration.ts deleted file mode 100644 index 9e93a1fd..00000000 --- a/app/src/main/pointer/src/generated/http-client/configuration.ts +++ /dev/null @@ -1,123 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -export interface ConfigurationParameters { - apiKey?: - | string - | Promise - | ((name: string) => string) - | ((name: string) => Promise); - username?: string; - password?: string; - accessToken?: - | string - | Promise - | ((name?: string, scopes?: string[]) => string) - | ((name?: string, scopes?: string[]) => Promise); - basePath?: string; - baseOptions?: any; - formDataCtor?: new () => any; -} - -export class Configuration { - /** - * parameter for apiKey security - * @param name security name - * @memberof Configuration - */ - apiKey?: - | string - | Promise - | ((name: string) => string) - | ((name: string) => Promise); - /** - * parameter for basic security - * - * @type {string} - * @memberof Configuration - */ - username?: string; - /** - * parameter for basic security - * - * @type {string} - * @memberof Configuration - */ - password?: string; - /** - * parameter for oauth2 security - * @param name security name - * @param scopes oauth2 scope - * @memberof Configuration - */ - accessToken?: - | string - | Promise - | ((name?: string, scopes?: string[]) => string) - | ((name?: string, scopes?: string[]) => Promise); - /** - * override base path - * - * @type {string} - * @memberof Configuration - */ - basePath?: string; - /** - * base options for axios calls - * - * @type {any} - * @memberof Configuration - */ - baseOptions?: any; - /** - * The FormData constructor that will be used to create multipart form data - * requests. You can inject this here so that execution environments that - * do not support the FormData class can still run the generated client. - * - * @type {new () => FormData} - */ - formDataCtor?: new () => any; - - constructor(param: ConfigurationParameters = {}) { - this.apiKey = param.apiKey; - this.username = param.username; - this.password = param.password; - this.accessToken = param.accessToken; - this.basePath = param.basePath; - this.baseOptions = param.baseOptions; - this.formDataCtor = param.formDataCtor; - } - - /** - * Check if the given MIME is a JSON MIME. - * JSON MIME examples: - * application/json - * application/json; charset=UTF8 - * APPLICATION/JSON - * application/vnd.company+json - * @param mime - MIME (Multipurpose Internet Mail Extensions) - * @return True if the given MIME is JSON, false otherwise. - */ - public isJsonMime(mime: string): boolean { - const jsonMime: RegExp = new RegExp( - "^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$", - "i" - ); - return ( - mime !== null && - (jsonMime.test(mime) || - mime.toLowerCase() === "application/json-patch+json") - ); - } -} diff --git a/app/src/main/pointer/src/generated/http-client/git_push.sh b/app/src/main/pointer/src/generated/http-client/git_push.sh deleted file mode 100644 index f53a75d4..00000000 --- a/app/src/main/pointer/src/generated/http-client/git_push.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh -# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ -# -# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" - -git_user_id=$1 -git_repo_id=$2 -release_note=$3 -git_host=$4 - -if [ "$git_host" = "" ]; then - git_host="github.com" - echo "[INFO] No command line input provided. Set \$git_host to $git_host" -fi - -if [ "$git_user_id" = "" ]; then - git_user_id="GIT_USER_ID" - echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" -fi - -if [ "$git_repo_id" = "" ]; then - git_repo_id="GIT_REPO_ID" - echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" -fi - -if [ "$release_note" = "" ]; then - release_note="Minor update" - echo "[INFO] No command line input provided. Set \$release_note to $release_note" -fi - -# Initialize the local directory as a Git repository -git init - -# Adds the files in the local repository and stages them for commit. -git add . - -# Commits the tracked changes and prepares them to be pushed to a remote repository. -git commit -m "$release_note" - -# Sets the new remote -git_remote=$(git remote) -if [ "$git_remote" = "" ]; then # git remote not defined - - if [ "$GIT_TOKEN" = "" ]; then - echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." - git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git - else - git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git - fi - -fi - -git pull origin master - -# Pushes (Forces) the changes in the local repository up to the remote repository -echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" -git push origin master 2>&1 | grep -v 'To https' diff --git a/app/src/main/pointer/src/generated/http-client/index.ts b/app/src/main/pointer/src/generated/http-client/index.ts deleted file mode 100644 index 61072a74..00000000 --- a/app/src/main/pointer/src/generated/http-client/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Smart Pointer Internal API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -export * from "./api"; -export * from "./configuration"; diff --git a/app/src/main/pointer/src/gql/gql.ts b/app/src/main/pointer/src/gql/gql.ts index c63fcfe2..c0344c82 100644 --- a/app/src/main/pointer/src/gql/gql.ts +++ b/app/src/main/pointer/src/gql/gql.ts @@ -2,7 +2,12 @@ import * as types from './graphql'; import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; -const documents = []; +const documents = { + "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n ": types.JoinRoomDocument, +}; + +export function graphql(source: "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "): (typeof documents)["\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "]; + export function graphql(source: string): unknown; export function graphql(source: string) { return (documents as any)[source] ?? {}; diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index 65a38474..880c86f8 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -1,4 +1,5 @@ /* eslint-disable */ +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; export type Maybe = T | null; export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; @@ -206,3 +207,15 @@ export type Users = { /** ユーザリスト */ users: Array; }; + +export type JoinRoomMutationVariables = Exact<{ + roomId: Scalars['ID']; + passcode: Scalars['String']; + userName: Scalars['String']; +}>; + + +export type JoinRoomMutation = { __typename?: 'Mutation', joinRoom: { __typename?: 'AccessToken', tokenType: string, accessToken: string, ttl: number } }; + + +export const JoinRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"JoinRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"joinRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"passcode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}}},{"kind":"Argument","name":{"kind":"Name","value":"userName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tokenType"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"ttl"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/app/src/main/pointer/src/types/AuthData.ts b/app/src/main/pointer/src/types/AuthData.ts index cb5906d4..8708f338 100644 --- a/app/src/main/pointer/src/types/AuthData.ts +++ b/app/src/main/pointer/src/types/AuthData.ts @@ -1,9 +1,7 @@ -import { AccessTokenResponse } from "@/generated/http-client"; - /** * ログインユーザ */ -export type AuthData = AccessTokenResponse & { +export type AuthData = { userName: string; roomId: string; }; From e273195750ed8d247f28bd55e69e8ecae7211428 Mon Sep 17 00:00:00 2001 From: kyochan <66947667+kyochn@users.noreply.github.com> Date: Thu, 10 Nov 2022 15:27:17 +0900 Subject: [PATCH 084/189] =?UTF-8?q?=E3=83=87=E3=82=B9=E3=82=AF=E3=83=88?= =?UTF-8?q?=E3=83=83=E3=83=97=E7=94=A8=E3=81=AE=E3=83=98=E3=83=AB=E3=83=97?= =?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E3=81=AE=E9=9B=9B=E5=BD=A2=E3=81=A0?= =?UTF-8?q?=E3=81=91=E4=BD=9C=E3=81=A3=E3=81=9F=20(#225)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * pipenvで環境を構築 * README書いた * yml書き換え * indexだけ残した * helpをルートディレクトリに持ってきた * README書き換え * favcon変更 * いらない画像削除 * help用にCI書き換え * コンフリクト解消するときに書き換わってしまったので修正 --- help/.gitignore | 56 ++ help/Pipfile | 30 + help/Pipfile.lock | 940 ++++++++++++++++++++++++++++++++ help/README.md | 25 + help/docs/assets/favicon.svg | 16 + help/docs/index.md | 1 + help/docs/stylesheets/extra.css | 132 +++++ help/mkdocs.yml | 63 +++ 8 files changed, 1263 insertions(+) create mode 100644 help/.gitignore create mode 100644 help/Pipfile create mode 100644 help/Pipfile.lock create mode 100644 help/README.md create mode 100644 help/docs/assets/favicon.svg create mode 100644 help/docs/index.md create mode 100644 help/docs/stylesheets/extra.css create mode 100644 help/mkdocs.yml diff --git a/help/.gitignore b/help/.gitignore new file mode 100644 index 00000000..503a8ad3 --- /dev/null +++ b/help/.gitignore @@ -0,0 +1,56 @@ + +### Windows ### +Thumbs.db +ehthumbs.db +Desktop.ini +$RECYCLE.BIN/ + +### Linux ### +!.gitignore +!.git* +*~ + +### OSX ### +.DS_Store +.AppleDouble +.LSOverride +Icon + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### Eclipse ### +*.pydevproject +.project +.metadata +bin/** +tmp/** +tmp/**/* +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath +.externalToolBuilders/ +*.launch +.cprojet +.buildpath + +### IntelliJ IDEA ### +.idea/ +*.iws +*.iml +*.ipr +out/ + +### mkdocs ### +public diff --git a/help/Pipfile b/help/Pipfile new file mode 100644 index 00000000..482b521c --- /dev/null +++ b/help/Pipfile @@ -0,0 +1,30 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +mkdocs = "*" +mkdocs-awesome-pages-plugin = "*" +mkdocs-git-revision-date-localized-plugin = "*" +mkdocs-macros-plugin = "*" +mkdocs-markdownextradata-plugin = "*" +mkdocs-material = "*" +mkdocs-minify-plugin = "*" +markdown-blockdiag = "*" +fontawesome-markdown = "*" +mkdocs-material-extensions = "*" +hbfm = "*" +nbconvert = "*" +mkdocs-rss-plugin = "*" +mkdocs-drawio-exporter = "*" +plantuml-markdown = "*" +mkdocs-glightbox = "*" +mkdocs-roamlinks-plugin = "*" +mdx-truly-sane-lists = "*" + +[dev-packages] + +[requires] +python_version = "3.10" +python_full_version = "3.10.4" diff --git a/help/Pipfile.lock b/help/Pipfile.lock new file mode 100644 index 00000000..d2faf954 --- /dev/null +++ b/help/Pipfile.lock @@ -0,0 +1,940 @@ +{ + "_meta": { + "hash": { + "sha256": "60720559699994ebb1d4e7d3c43f78de6aab2baa931b44794db7db8c68c41505" + }, + "pipfile-spec": 6, + "requires": { + "python_full_version": "3.10.4", + "python_version": "3.10" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "actdiag": { + "hashes": [ + "sha256:0efc9b2887d3ec765b0f45bde1d5757a52301151ea62bcc2297e77aad9264006", + "sha256:1b24410a4796ab0d704fcaa96d132b559d2b9b0af194ccc663d7761623cd0581" + ], + "markers": "python_version >= '3.7'", + "version": "==3.0.0" + }, + "attrs": { + "hashes": [ + "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", + "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" + ], + "markers": "python_version >= '3.5'", + "version": "==22.1.0" + }, + "babel": { + "hashes": [ + "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe", + "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6" + ], + "markers": "python_version >= '3.6'", + "version": "==2.11.0" + }, + "beautifulsoup4": { + "hashes": [ + "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30", + "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693" + ], + "markers": "python_full_version >= '3.6.0'", + "version": "==4.11.1" + }, + "bleach": { + "hashes": [ + "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a", + "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c" + ], + "markers": "python_version >= '3.7'", + "version": "==5.0.1" + }, + "blockdiag": { + "hashes": [ + "sha256:4031bfae6a7f36071d733dec639987346e10f7871356ee2c7a221961c64961d8", + "sha256:dee4195bb87d23654546ba2bf5091480dbf253b409891fce2cd527c91d00a3e2" + ], + "markers": "python_version >= '3.7'", + "version": "==3.0.0" + }, + "bracex": { + "hashes": [ + "sha256:351b7f20d56fb9ea91f9b9e9e7664db466eb234188c175fd943f8f755c807e73", + "sha256:e7b23fc8b2cd06d3dec0692baabecb249dda94e06a617901ff03a6c56fd71693" + ], + "markers": "python_version >= '3.7'", + "version": "==2.3.post1" + }, + "certifi": { + "hashes": [ + "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", + "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" + ], + "markers": "python_version >= '3.6'", + "version": "==2022.9.24" + }, + "charset-normalizer": { + "hashes": [ + "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", + "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" + ], + "markers": "python_full_version >= '3.6.0'", + "version": "==2.1.1" + }, + "click": { + "hashes": [ + "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", + "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" + ], + "markers": "python_version >= '3.7'", + "version": "==8.1.3" + }, + "colorama": { + "hashes": [ + "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", + "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" + ], + "markers": "platform_system == 'Windows'", + "version": "==0.4.6" + }, + "csscompressor": { + "hashes": [ + "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05" + ], + "version": "==0.9.5" + }, + "defusedxml": { + "hashes": [ + "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", + "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.7.1" + }, + "entrypoints": { + "hashes": [ + "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4", + "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f" + ], + "markers": "python_version >= '3.6'", + "version": "==0.4" + }, + "fastjsonschema": { + "hashes": [ + "sha256:01e366f25d9047816fe3d288cbfc3e10541daf0af2044763f3d0ade42476da18", + "sha256:21f918e8d9a1a4ba9c22e09574ba72267a6762d47822db9add95f6454e51cc1c" + ], + "version": "==2.16.2" + }, + "fontawesome-markdown": { + "hashes": [ + "sha256:95a12f1629a595afc4aabc886ffdb8b5fa0ae8f77e8f3437b7b1942d91f91f4b" + ], + "index": "pypi", + "version": "==0.2.6" + }, + "funcparserlib": { + "hashes": [ + "sha256:95da15d3f0d00b9b6f4bf04005c708af3faa115f7b45692ace064ebe758c68e8", + "sha256:a2c4a0d7942f7a0e7635c369d921066c8d4cae7f8b5bf7914466bec3c69837f4" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", + "version": "==1.0.1" + }, + "ghp-import": { + "hashes": [ + "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", + "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" + ], + "version": "==2.1.0" + }, + "gitdb": { + "hashes": [ + "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd", + "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa" + ], + "markers": "python_version >= '3.6'", + "version": "==4.0.9" + }, + "gitpython": { + "hashes": [ + "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f", + "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.29" + }, + "hbfm": { + "hashes": [ + "sha256:0e9decff6c83204dac55cd6f637fa80ffe3e8aba913be85003edabc70b9f0cf2" + ], + "index": "pypi", + "version": "==1.0.0" + }, + "htmlmin": { + "hashes": [ + "sha256:50c1ef4630374a5d723900096a961cff426dff46b48f34d194a81bbe14eca178" + ], + "version": "==0.1.12" + }, + "idna": { + "hashes": [ + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" + ], + "markers": "python_version >= '3.5'", + "version": "==3.4" + }, + "jinja2": { + "hashes": [ + "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", + "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.2" + }, + "jsmin": { + "hashes": [ + "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc" + ], + "version": "==3.0.1" + }, + "jsonschema": { + "hashes": [ + "sha256:5bfcf2bca16a087ade17e02b282d34af7ccd749ef76241e7f9bd7c0cb8a9424d", + "sha256:f660066c3966db7d6daeaea8a75e0b68237a48e51cf49882087757bb59916248" + ], + "markers": "python_version >= '3.7'", + "version": "==4.17.0" + }, + "jupyter-client": { + "hashes": [ + "sha256:1c1d418ef32a45a1fae0b243e6f01cc9bf65fa8ddbd491a034b9ba6ac6502951", + "sha256:5616db609ac720422e6a4b893d6572b8d655ff41e058367f4459a0d2c0726832" + ], + "markers": "python_version >= '3.7'", + "version": "==7.4.4" + }, + "jupyter-core": { + "hashes": [ + "sha256:3815e80ec5272c0c19aad087a0d2775df2852cfca8f5a17069e99c9350cecff8", + "sha256:c2909b9bc7dca75560a6c5ae78c34fd305ede31cd864da3c0d0bb2ed89aa9337" + ], + "markers": "python_version >= '3.7'", + "version": "==4.11.2" + }, + "jupyterlab-pygments": { + "hashes": [ + "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f", + "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d" + ], + "markers": "python_version >= '3.7'", + "version": "==0.2.2" + }, + "markdown": { + "hashes": [ + "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874", + "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621" + ], + "markers": "python_version >= '3.6'", + "version": "==3.3.7" + }, + "markdown-blockdiag": { + "hashes": [ + "sha256:5383e3d6b15baa904c020d2bc6de17182d2c2ca7e5f8e51cf5f78124690ddeee" + ], + "index": "pypi", + "version": "==0.8.0" + }, + "markupsafe": { + "hashes": [ + "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", + "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", + "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", + "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", + "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", + "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", + "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", + "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", + "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", + "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", + "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", + "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", + "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", + "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", + "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", + "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", + "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", + "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", + "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", + "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", + "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", + "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", + "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", + "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", + "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", + "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", + "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", + "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", + "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", + "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", + "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", + "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", + "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", + "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", + "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", + "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", + "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", + "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", + "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", + "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.1" + }, + "mdx-truly-sane-lists": { + "hashes": [ + "sha256:b661022df7520a1e113af7c355c62216b384c867e4f59fb8ee7ad511e6e77f45", + "sha256:b9546a4c40ff8f1ab692f77cee4b6bfe8ddf9cccf23f0a24e71f3716fe290a37" + ], + "index": "pypi", + "version": "==1.3" + }, + "mergedeep": { + "hashes": [ + "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", + "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" + ], + "markers": "python_version >= '3.6'", + "version": "==1.3.4" + }, + "mistune": { + "hashes": [ + "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d", + "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808" + ], + "version": "==2.0.4" + }, + "mkdocs": { + "hashes": [ + "sha256:8947af423a6d0facf41ea1195b8e1e8c85ad94ac95ae307fe11232e0424b11c5", + "sha256:c8856a832c1e56702577023cd64cc5f84948280c1c0fcc6af4cd39006ea6aa8c" + ], + "index": "pypi", + "version": "==1.4.2" + }, + "mkdocs-awesome-pages-plugin": { + "hashes": [ + "sha256:6b21ad4f41aecbe89e3a9a51f8837892cc7ce8ca0f9f4e0a355d56159ace3d68", + "sha256:af7e327e14b2eea3b2735c37428e33a528ecd2d9ae2296dc0f1632f0f3bc28f7" + ], + "index": "pypi", + "version": "==2.8.0" + }, + "mkdocs-drawio-exporter": { + "hashes": [ + "sha256:c5f41c739f0722e791fbe9ba88265e276815413139331789ebdfdd757a3fdcb7", + "sha256:f5cbc0d7ce854ba6c79a93abbf839f3d9e6445f81f69f05f696c60589225c300" + ], + "index": "pypi", + "version": "==0.8.0" + }, + "mkdocs-git-revision-date-localized-plugin": { + "hashes": [ + "sha256:38517e2084229da1a1b9460e846c2748d238c2d79efd405d1b9174a87bd81d79", + "sha256:4ba0e49abea3e9f6ee26e2623ff7283873da657471c61f1d0cfbb986f403316d" + ], + "index": "pypi", + "version": "==1.1.0" + }, + "mkdocs-glightbox": { + "hashes": [ + "sha256:cea3b79277144cb8dbdb1dcb3fc420e64c4357b2453941db1452c166ad9430ad" + ], + "index": "pypi", + "version": "==0.3.0" + }, + "mkdocs-macros-plugin": { + "hashes": [ + "sha256:96bdabeb98b96139544f0048ea2f5cb80c7befde6b21e94c6d4596c22774cbcf", + "sha256:9e64e1cabcf6925359de29fe54f62d5847fb455c2528c440b87f8f1240650608" + ], + "index": "pypi", + "version": "==0.7.0" + }, + "mkdocs-markdownextradata-plugin": { + "hashes": [ + "sha256:9c562e8fe375647d5692d11dfe369a7bdd50302174d35995fce2aeca58036ec6" + ], + "index": "pypi", + "version": "==0.2.5" + }, + "mkdocs-material": { + "hashes": [ + "sha256:61396251819cf7f547f70a09ce6a7edb2ff5d32e47b9199769020b2d20a83d44", + "sha256:7ff092299e3a63cef99cd87e4a6cc7e7d9ec31fd190d766fd147c35572e6d593" + ], + "index": "pypi", + "version": "==8.5.8" + }, + "mkdocs-material-extensions": { + "hashes": [ + "sha256:96ca979dae66d65c2099eefe189b49d5ac62f76afb59c38e069ffc7cf3c131ec", + "sha256:bcc2e5fc70c0ec50e59703ee6e639d87c7e664c0c441c014ea84461a90f1e902" + ], + "index": "pypi", + "version": "==1.1" + }, + "mkdocs-minify-plugin": { + "hashes": [ + "sha256:29e14e4ab2d436cb05f56333c9bfbff561fc89402e04d0f1ccfe23a3e7070ba2", + "sha256:6104f8132232da65cfe5d37c56b8ab3f5378f9fcedc341c180f62fdb25149cfe" + ], + "index": "pypi", + "version": "==0.6.1" + }, + "mkdocs-roamlinks-plugin": { + "hashes": [ + "sha256:54381b74767ecd7c13909d8b8948e9323cc42f9aec16ac5b425bdcf0534ddd32", + "sha256:a0922cff40d7ece56a22421635650edbe86895adbee99b92302cc3a7909e0839" + ], + "index": "pypi", + "version": "==0.2.0" + }, + "mkdocs-rss-plugin": { + "hashes": [ + "sha256:2ab14c20bf6b7983acbe50181e7e4a0778731d9c2d5c38107ca7047a7abd2165", + "sha256:4178b3830dcbad9b53b12459e315b1aad6b37d1e7e5c56c686866a10f99878a4" + ], + "index": "pypi", + "version": "==1.5.0" + }, + "natsort": { + "hashes": [ + "sha256:04fe18fdd2b9e5957f19f687eb117f102ef8dde6b574764e536e91194bed4f5f", + "sha256:57f85b72c688b09e053cdac302dd5b5b53df5f73ae20b4874fcbffd8bf783d11" + ], + "markers": "python_version >= '3.6'", + "version": "==8.2.0" + }, + "nbclient": { + "hashes": [ + "sha256:434c91385cf3e53084185334d675a0d33c615108b391e260915d1aa8e86661b8", + "sha256:a1d844efd6da9bc39d2209bf996dbd8e07bf0f36b796edfabaa8f8a9ab77c3aa" + ], + "markers": "python_full_version >= '3.7.0'", + "version": "==0.7.0" + }, + "nbconvert": { + "hashes": [ + "sha256:66326174c190dc4f0a6cbbff96f30c632774b441fa3c7565662bb3d41992fb0f", + "sha256:7ae7ccc68495b565dab153459ee7e65039970913eb115070da6e2c673cf0e9f8" + ], + "index": "pypi", + "version": "==7.2.3" + }, + "nbformat": { + "hashes": [ + "sha256:1b05ec2c552c2f1adc745f4eddce1eac8ca9ffd59bb9fd859e827eaa031319f9", + "sha256:1d4760c15c1a04269ef5caf375be8b98dd2f696e5eb9e603ec2bf091f9b0d3f3" + ], + "markers": "python_version >= '3.7'", + "version": "==5.7.0" + }, + "nest-asyncio": { + "hashes": [ + "sha256:b9a953fb40dceaa587d109609098db21900182b16440652454a146cffb06e8b8", + "sha256:d267cc1ff794403f7df692964d1d2a3fa9418ffea2a3f6859a439ff482fef290" + ], + "markers": "python_version >= '3.5'", + "version": "==1.5.6" + }, + "nwdiag": { + "hashes": [ + "sha256:549cab5400ca33b8c05ea119414fa41e6bd85be222ba524418c2c176eea87e80", + "sha256:e267530fcaac8a1d9e7403048597ed30e031e17f0191569dc6f704087bacb2eb" + ], + "markers": "python_version >= '3.7'", + "version": "==3.0.0" + }, + "packaging": { + "hashes": [ + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + ], + "markers": "python_version >= '3.6'", + "version": "==21.3" + }, + "pandocfilters": { + "hashes": [ + "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38", + "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.5.0" + }, + "pillow": { + "hashes": [ + "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040", + "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8", + "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65", + "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2", + "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627", + "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07", + "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef", + "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535", + "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c", + "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc", + "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3", + "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1", + "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c", + "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa", + "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32", + "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502", + "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4", + "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f", + "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812", + "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636", + "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20", + "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c", + "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91", + "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe", + "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b", + "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad", + "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9", + "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72", + "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4", + "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de", + "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29", + "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee", + "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c", + "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7", + "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11", + "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c", + "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c", + "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448", + "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b", + "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20", + "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228", + "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd", + "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699", + "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b", + "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2", + "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4", + "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c", + "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f", + "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2", + "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c", + "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3", + "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193", + "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48", + "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02", + "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8", + "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e", + "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f", + "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b", + "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74", + "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb", + "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0" + ], + "markers": "python_version >= '3.7'", + "version": "==9.3.0" + }, + "plantuml-markdown": { + "hashes": [ + "sha256:b23461fb799ed37131feea40cb7db4ef41cf8a496acb27f21d5c1894729421c5" + ], + "index": "pypi", + "version": "==3.7.3" + }, + "pygments": { + "hashes": [ + "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1", + "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42" + ], + "markers": "python_version >= '3.6'", + "version": "==2.13.0" + }, + "pymdown-extensions": { + "hashes": [ + "sha256:1bd4a173095ef8c433b831af1f3cb13c10883be0c100ae613560668e594651f7", + "sha256:8e62688a8b1128acd42fa823f3d429d22f4284b5e6dd4d3cd56721559a5a211b" + ], + "markers": "python_version >= '3.7'", + "version": "==9.8" + }, + "pyparsing": { + "hashes": [ + "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", + "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" + ], + "markers": "python_full_version >= '3.6.8'", + "version": "==3.0.9" + }, + "pyrsistent": { + "hashes": [ + "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed", + "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb", + "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a", + "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95", + "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712", + "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73", + "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41", + "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b", + "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78", + "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab", + "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308", + "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425", + "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2", + "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e", + "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6", + "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2", + "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a", + "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291", + "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584", + "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a", + "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0", + "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770" + ], + "markers": "python_version >= '3.7'", + "version": "==0.19.2" + }, + "python-dateutil": { + "hashes": [ + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.8.2" + }, + "pytz": { + "hashes": [ + "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427", + "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2" + ], + "version": "==2022.6" + }, + "pywin32": { + "hashes": [ + "sha256:109f98980bfb27e78f4df8a51a8198e10b0f347257d1e265bb1a32993d0c973d", + "sha256:13362cc5aa93c2beaf489c9c9017c793722aeb56d3e5166dadd5ef82da021fe1", + "sha256:19ca459cd2e66c0e2cc9a09d589f71d827f26d47fe4a9d09175f6aa0256b51c2", + "sha256:326f42ab4cfff56e77e3e595aeaf6c216712bbdd91e464d167c6434b28d65990", + "sha256:421f6cd86e84bbb696d54563c48014b12a23ef95a14e0bdba526be756d89f116", + "sha256:48d8b1659284f3c17b68587af047d110d8c44837736b8932c034091683e05863", + "sha256:4ecd404b2c6eceaca52f8b2e3e91b2187850a1ad3f8b746d0796a98b4cea04db", + "sha256:50768c6b7c3f0b38b7fb14dd4104da93ebced5f1a50dc0e834594bff6fbe1271", + "sha256:56d7a9c6e1a6835f521788f53b5af7912090674bb84ef5611663ee1595860fc7", + "sha256:73e819c6bed89f44ff1d690498c0a811948f73777e5f97c494c152b850fad478", + "sha256:742eb905ce2187133a29365b428e6c3b9001d79accdc30aa8969afba1d8470f4", + "sha256:9d968c677ac4d5cbdaa62fd3014ab241718e619d8e36ef8e11fb930515a1e918", + "sha256:9dd98384da775afa009bc04863426cb30596fd78c6f8e4e2e5bbf4edf8029504", + "sha256:a55db448124d1c1484df22fa8bbcbc45c64da5e6eae74ab095b9ea62e6d00496" + ], + "markers": "sys_platform == 'win32' and platform_python_implementation != 'PyPy'", + "version": "==305" + }, + "pyyaml": { + "hashes": [ + "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" + ], + "markers": "python_version >= '3.6'", + "version": "==6.0" + }, + "pyyaml-env-tag": { + "hashes": [ + "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", + "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069" + ], + "markers": "python_version >= '3.6'", + "version": "==0.1" + }, + "pyzmq": { + "hashes": [ + "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107", + "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7", + "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d", + "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc", + "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c", + "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4", + "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8", + "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8", + "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287", + "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b", + "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f", + "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77", + "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066", + "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209", + "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd", + "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a", + "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4", + "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc", + "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58", + "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246", + "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62", + "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227", + "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b", + "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944", + "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2", + "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804", + "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8", + "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066", + "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1", + "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33", + "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639", + "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef", + "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a", + "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace", + "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00", + "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5", + "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b", + "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879", + "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340", + "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4", + "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4", + "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6", + "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3", + "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f", + "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3", + "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409", + "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913", + "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1", + "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43", + "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333", + "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75", + "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff", + "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e", + "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2", + "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef", + "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1", + "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330", + "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d", + "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0", + "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6", + "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea", + "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f", + "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff", + "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99", + "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b", + "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d", + "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be", + "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58", + "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc", + "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83", + "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d", + "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc", + "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66", + "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e" + ], + "markers": "python_version >= '3.6'", + "version": "==24.0.1" + }, + "requests": { + "hashes": [ + "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", + "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==2.28.1" + }, + "seqdiag": { + "hashes": [ + "sha256:8fc941a0badc992766ffb393cf46d56f087e6c58438bc20699e7cdbae202033d", + "sha256:e15113a28bd075460a62da44e15a88fafa3c81fdf3a35dcd5e3cd64ef15e961a" + ], + "markers": "python_version >= '3.7'", + "version": "==3.0.0" + }, + "setuptools": { + "hashes": [ + "sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31", + "sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f" + ], + "markers": "python_version >= '3.7'", + "version": "==65.5.1" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "smmap": { + "hashes": [ + "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94", + "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936" + ], + "markers": "python_version >= '3.6'", + "version": "==5.0.0" + }, + "soupsieve": { + "hashes": [ + "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759", + "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d" + ], + "markers": "python_version >= '3.6'", + "version": "==2.3.2.post1" + }, + "termcolor": { + "hashes": [ + "sha256:91dd04fdf661b89d7169cefd35f609b19ca931eb033687eaa647cef1ff177c49", + "sha256:b80df54667ce4f48c03fe35df194f052dc27a541ebbf2544e4d6b47b5d6949c4" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.0" + }, + "tinycss2": { + "hashes": [ + "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847", + "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627" + ], + "markers": "python_version >= '3.7'", + "version": "==1.2.1" + }, + "tornado": { + "hashes": [ + "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca", + "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72", + "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23", + "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8", + "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b", + "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9", + "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13", + "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75", + "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac", + "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e", + "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b" + ], + "markers": "python_version >= '3.7'", + "version": "==6.2" + }, + "traitlets": { + "hashes": [ + "sha256:1201b2c9f76097195989cdf7f65db9897593b0dfd69e4ac96016661bb6f0d30f", + "sha256:b122f9ff2f2f6c1709dab289a05555be011c87828e911c0cf4074b85cb780a79" + ], + "markers": "python_version >= '3.7'", + "version": "==5.5.0" + }, + "tzdata": { + "hashes": [ + "sha256:04a680bdc5b15750c39c12a448885a51134a27ec9af83667663f0b3a1bf3f342", + "sha256:91f11db4503385928c15598c98573e3af07e7229181bee5375bd30f1695ddcae" + ], + "markers": "python_version >= '3.9' and sys_platform == 'win32'", + "version": "==2022.6" + }, + "urllib3": { + "hashes": [ + "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e", + "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", + "version": "==1.26.12" + }, + "watchdog": { + "hashes": [ + "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412", + "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654", + "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306", + "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33", + "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd", + "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7", + "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892", + "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609", + "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6", + "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1", + "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591", + "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d", + "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d", + "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c", + "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3", + "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39", + "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213", + "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330", + "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428", + "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1", + "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846", + "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153", + "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3", + "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9", + "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658" + ], + "markers": "python_version >= '3.6'", + "version": "==2.1.9" + }, + "wcmatch": { + "hashes": [ + "sha256:3476cd107aba7b25ba1d59406938a47dc7eec6cfd0ad09ff77193f21a964dee7", + "sha256:b1f042a899ea4c458b7321da1b5e3331e3e0ec781583434de1301946ceadb943" + ], + "markers": "python_version >= '3.7'", + "version": "==8.4.1" + }, + "webcolors": { + "hashes": [ + "sha256:16d043d3a08fd6a1b1b7e3e9e62640d09790dce80d2bdd4792a175b35fe794a9", + "sha256:d98743d81d498a2d3eaf165196e65481f0d2ea85281463d856b1e51b09f62dce" + ], + "markers": "python_version >= '3.7'", + "version": "==1.12" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + } + }, + "develop": {} +} diff --git a/help/README.md b/help/README.md new file mode 100644 index 00000000..090ad1ea --- /dev/null +++ b/help/README.md @@ -0,0 +1,25 @@ +# ヘルプページ + +![version](https://img.shields.io/badge/version-1.1.0__SNAPSHOT-blue.svg) + +## 開発 + +### 環境構築 + +```sh +$ pipenv install +$ pipenv shell +$ mkdocs build --strict +``` + +### ビルド方法 + +```sh +$ mkdocs build --strict +``` + +### 開発用サーバを起動 + +```sh +$ mkdocs serve +``` diff --git a/help/docs/assets/favicon.svg b/help/docs/assets/favicon.svg new file mode 100644 index 00000000..3176022a --- /dev/null +++ b/help/docs/assets/favicon.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/help/docs/index.md b/help/docs/index.md new file mode 100644 index 00000000..46f37dbf --- /dev/null +++ b/help/docs/index.md @@ -0,0 +1 @@ +# 概要 \ No newline at end of file diff --git a/help/docs/stylesheets/extra.css b/help/docs/stylesheets/extra.css new file mode 100644 index 00000000..5443fe2e --- /dev/null +++ b/help/docs/stylesheets/extra.css @@ -0,0 +1,132 @@ +.md-typeset h1 { + /*font-size: 24pt;*/ + font-weight: bold; + color: #000; + border-bottom: solid 2px #226847; + padding-bottom: 5px; +} +.md-typeset h2 { + border-bottom: 1px dotted #888; +} + +/* Material テーマの場合 */ +.md-typeset h1::before { + display: inline-block !important; + font-family: "FontAwesome"; + content: "\f02d" !important; + margin-right: 0.3em; +} + +.md-typeset h2::before { + display: inline-block !important; + font-family: "FontAwesome"; + content: "\f0a9" !important; + margin-right: 0.3em; +} + +.md-typeset h3::before { + display: inline-block !important; + font-family: "FontAwesome"; + content: "\f101" !important; + margin-right: 0.3em; +} + +.md-typeset h4::before { + display: inline-block !important; + font-family: "FontAwesome"; + content: "\f054" !important; + margin-right: 0.3em; +} + +.md-typeset h5::before { + display: inline-block !important; + font-family: "FontAwesome"; + content: "\f054" !important; + margin-right: 0.3em; +} + +.md-typeset h6::before { + display: inline-block !important; + font-family: "FontAwesome"; + content: "\f054" !important; + margin-right: 0.3em; +} + +div.md-grid { + max-width: 75rem; +} + +.balloon5 { + width: 100%; + margin: 1.5em 0; + overflow: hidden; +} + +.balloon5 .faceicon { + float: left; + margin-right: -90px; + width: 80px; +} + +.balloon5 .faceicon img { + width: 100%; + height: auto; + border: solid 3px #d7ebfe; + border-radius: 50%; +} + +.balloon5 .chatting { + width: 100%; +} + +.says { + display: inline-block; + position: relative; + margin: 5px 0 0 105px; + padding: 17px 13px; + border-radius: 12px; + background: #d7ebfe; +} + +.says:after { + content: ""; + display: inline-block; + position: absolute; + top: 18px; + left: -24px; + border: 12px solid transparent; + border-right: 12px solid #d7ebfe; +} + +.says p { + margin: 0; + padding: 0; +} + +.badge-all { + padding: 3px 6px; + margin-right: 8px; + margin-left: 1px; + font-size: 75%; + color: white; + border-radius: 6px; + box-shadow: 0 0 3px #ddd; + white-space: nowrap; +} + +.blue-badge { + background-color: #58acfa; /*青*/ +} + +.green-badge { + background-color: #61b064; /*緑*/ +} + +.tag-badge { + background-color: #7bb07c; + font-size: 60%; +} + +.orange-badge { + background-color: #f09c00; /*オレンジ*/ +} diff --git a/help/mkdocs.yml b/help/mkdocs.yml new file mode 100644 index 00000000..1cc5b591 --- /dev/null +++ b/help/mkdocs.yml @@ -0,0 +1,63 @@ +site_name: スマートポインター +site_url: https://smartpointer.abelab.dev/help +site_dir: public + +theme: + language: ja + name: material + palette: + primary: Indigo + accent: Indigo + features: + - navigation.top + - navigation.instant + icon: + repo: fontawesome/brands/github + favicon: assets/favicon.svg + +extra_css: + - stylesheets/extra.css + - https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css + - https://unpkg.com/mermaid@8.0.0/dist/mermaid.css + +extra_javascript: + - https://unpkg.com/mermaid@8.0.0/dist/mermaid.min.js + +plugins: + - search: + lang: + - ja + - awesome-pages + +markdown_extensions: + - hbfm.quote_uri_hash + - hbfm.inline_coloring + - pymdownx.tilde + - pymdownx.mark + - pymdownx.magiclink + - pymdownx.emoji + - pymdownx.keys + - pymdownx.details + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + - markdown.extensions.nl2br + - fontawesome_markdown + - def_list + - admonition + - meta + - footnotes + - pymdownx.critic + - markdown_blockdiag: + format: svg + - toc: + permalink: "¶" + - pymdownx.tasklist: + clickable_checkbox: true + - pymdownx.highlight: + linenums: true + - plantuml_markdown: + server: http://www.plantuml.com/plantuml + - mdx_truly_sane_lists: + nested_indent: 2 From 6a6bc668cf15f67b2e80addf2265836459180d95 Mon Sep 17 00:00:00 2001 From: averak Date: Thu, 10 Nov 2022 11:10:56 +0900 Subject: [PATCH 085/189] =?UTF-8?q?[feat]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E9=96=8B=E5=A7=8BAPI=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/SmartPointerApplication.java | 2 +- .../auth/JWTAuthorizationFilter.java | 66 +++++++++++++++++++ .../smartpointer/auth/LoginUserDetails.java | 61 +++++++++++++++++ .../auth/LoginUserDetailsService.java | 31 +++++++++ .../auth/UserAuthenticationProvider.java | 13 ++++ .../config/MessageSourceConfig.java | 6 +- .../config/PasswordEncoderConfig.java | 19 ++++++ .../config/WebSecurityConfig.java | 30 ++++++++- .../smartpointer/config/WebSocketConfig.java | 5 +- .../smartpointer/domain/model/TimerModel.java | 13 ++-- .../domain/service/TimerService.java | 27 ++++++++ .../smartpointer/exception/ErrorCode.java | 4 +- .../api/GlobalStompControllerAdvice.java | 1 - .../api/StompHandshakeHandler.java | 31 --------- ...ocketGraphQLAuthenticationInterceptor.java | 56 ++++++++++++++++ .../api/controller/RoomRestController.java | 2 - .../api/controller/TimerController.java | 29 ++++++++ .../api/controller/TimerStompController.java | 9 +-- .../api/request/PointerControlRequest.java | 1 + .../api/request/RoomJoinRequest.java | 1 + .../api/request/TimerResumeRequest.java | 3 +- .../api/request/TimerStartRequest.java | 10 +-- .../api/response/PointerControlResponse.java | 2 - .../api/validation/RequestValidator.java | 2 +- .../infrastructure/factory/TimerFactory.java | 1 + .../plugin/IgnoreTablePlugin.java | 2 +- .../usecase/timer/StartTimerUseCase.java | 19 ++++-- .../usecase/user/JoinRoomUseCase.java | 1 - .../main/resources/db/mapper/TimerMapper.xml | 13 ++-- app/src/main/resources/i18n/messages.yml | 4 +- .../usecase/AbstractUseCase_UT.groovy | 4 ++ .../usecase/timer/StartTimerUseCase_UT.groovy | 15 ++--- 32 files changed, 390 insertions(+), 93 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/auth/JWTAuthorizationFilter.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/auth/LoginUserDetails.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/auth/LoginUserDetailsService.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/auth/UserAuthenticationProvider.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/config/PasswordEncoderConfig.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/service/TimerService.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/StompHandshakeHandler.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java diff --git a/app/src/main/java/dev/abelab/smartpointer/SmartPointerApplication.java b/app/src/main/java/dev/abelab/smartpointer/SmartPointerApplication.java index 1d81ca0c..fc5e6ba6 100644 --- a/app/src/main/java/dev/abelab/smartpointer/SmartPointerApplication.java +++ b/app/src/main/java/dev/abelab/smartpointer/SmartPointerApplication.java @@ -6,7 +6,7 @@ @SpringBootApplication public class SmartPointerApplication { - public static void main(String[] args) { + public static void main(final String[] args) { SpringApplication.run(SmartPointerApplication.class, args); } diff --git a/app/src/main/java/dev/abelab/smartpointer/auth/JWTAuthorizationFilter.java b/app/src/main/java/dev/abelab/smartpointer/auth/JWTAuthorizationFilter.java new file mode 100644 index 00000000..402b4142 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/auth/JWTAuthorizationFilter.java @@ -0,0 +1,66 @@ +package dev.abelab.smartpointer.auth; + +import java.io.IOException; +import java.util.Optional; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.http.HttpHeaders; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; + +import dev.abelab.smartpointer.property.AuthProperty; +import io.jsonwebtoken.Jwts; + +/** + * 認可フィルタ + */ +public class JWTAuthorizationFilter extends BasicAuthenticationFilter { + + private final AuthProperty authProperty; + + private final UserDetailsService userDetailsService; + + public JWTAuthorizationFilter(final AuthenticationManager authenticationManager, final AuthProperty authProperty, + final UserDetailsService userDetailsService) { + super(authenticationManager); + this.authProperty = authProperty; + this.userDetailsService = userDetailsService; + } + + @Override + protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) + throws IOException, ServletException { + final var authentication = this.getAuthentication(request); + SecurityContextHolder.getContext().setAuthentication(authentication); + chain.doFilter(request, response); + } + + private UsernamePasswordAuthenticationToken getAuthentication(final HttpServletRequest request) { + final var authorizationHeader = Optional.ofNullable(request.getHeader(HttpHeaders.AUTHORIZATION)).orElse(""); + if (!authorizationHeader.startsWith("Bearer ")) { + return null; + } + + try { + final var jwt = authorizationHeader.replace("Bearer ", ""); + final var subject = Jwts.parser() // + .setSigningKey(this.authProperty.getJwt().getSecret().getBytes()) // + .requireIssuer(this.authProperty.getJwt().getIssuer()) // + .parseClaimsJws(jwt) // + .getBody() // + .getSubject(); + final var principal = this.userDetailsService.loadUserByUsername(subject); + return new UsernamePasswordAuthenticationToken(principal, null, principal.getAuthorities()); + } catch (final Exception e) { + return null; + } + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/auth/LoginUserDetails.java b/app/src/main/java/dev/abelab/smartpointer/auth/LoginUserDetails.java new file mode 100644 index 00000000..f65f2c43 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/auth/LoginUserDetails.java @@ -0,0 +1,61 @@ +package dev.abelab.smartpointer.auth; + +import java.util.Collection; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import dev.abelab.smartpointer.domain.model.UserModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Login User Details + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class LoginUserDetails extends UserModel implements UserDetails { + + /** + * authorities + */ + Collection authorities; + + public LoginUserDetails(final UserModel userModel, final Collection authorities) { + this.setId(userModel.getId()); + this.setRoomId(userModel.getRoomId()); + this.setName(userModel.getName()); + this.authorities = authorities; + } + + @Override + public String getUsername() { + return this.getId(); + } + + @Override + public String getPassword() { + return null; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/auth/LoginUserDetailsService.java b/app/src/main/java/dev/abelab/smartpointer/auth/LoginUserDetailsService.java new file mode 100644 index 00000000..ebafd24e --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/auth/LoginUserDetailsService.java @@ -0,0 +1,31 @@ +package dev.abelab.smartpointer.auth; + +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import dev.abelab.smartpointer.domain.repository.UserRepository; +import lombok.RequiredArgsConstructor; + +/** + * User Details Service + */ +@Service +@RequiredArgsConstructor +public class LoginUserDetailsService implements UserDetailsService { + + private final UserRepository userRepository; + + @Override + @Transactional(readOnly = true) + public UserDetails loadUserByUsername(final String id) throws UsernameNotFoundException { + final var authorities = AuthorityUtils.createAuthorityList("ROLE_USER"); + return this.userRepository.selectById(id) // + .map(userModel -> new LoginUserDetails(userModel, authorities)) // + .orElseThrow(() -> new UsernameNotFoundException(null)); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/auth/UserAuthenticationProvider.java b/app/src/main/java/dev/abelab/smartpointer/auth/UserAuthenticationProvider.java new file mode 100644 index 00000000..2b78c1fc --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/auth/UserAuthenticationProvider.java @@ -0,0 +1,13 @@ +package dev.abelab.smartpointer.auth; + +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; + +/** + * User Authentication Provider + */ +public class UserAuthenticationProvider extends DaoAuthenticationProvider { + + @Override + protected void doAfterPropertiesSet() {} + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/config/MessageSourceConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/MessageSourceConfig.java index b5bdc28c..6e44dd2e 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/MessageSourceConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/MessageSourceConfig.java @@ -18,8 +18,8 @@ @Configuration public class MessageSourceConfig { @Bean - public MessageSource messageSource(@Value("${spring.messages.basename}") String basename, - @Value("${spring.messages.encoding}") String encoding) { + public MessageSource messageSource(@Value("${spring.messages.basename}") final String basename, + @Value("${spring.messages.encoding}") final String encoding) { final var messageSource = new YamlMessageSource(); @@ -31,7 +31,7 @@ public MessageSource messageSource(@Value("${spring.messages.basename}") String private static class YamlMessageSource extends ResourceBundleMessageSource { @Override - protected ResourceBundle doGetBundle(String basename, Locale locale) throws MissingResourceException { + protected ResourceBundle doGetBundle(final String basename, final Locale locale) throws MissingResourceException { return ResourceBundle.getBundle(basename, locale, YamlResourceBundle.Control.INSTANCE); } diff --git a/app/src/main/java/dev/abelab/smartpointer/config/PasswordEncoderConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/PasswordEncoderConfig.java new file mode 100644 index 00000000..95438e52 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/config/PasswordEncoderConfig.java @@ -0,0 +1,19 @@ +package dev.abelab.smartpointer.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + +/** + * PasswordEncoderの設定 + */ +@Configuration +public class PasswordEncoderConfig { + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/config/WebSecurityConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/WebSecurityConfig.java index 0a32fc7a..ea2b86a7 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/WebSecurityConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/WebSecurityConfig.java @@ -2,11 +2,18 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; +import dev.abelab.smartpointer.auth.JWTAuthorizationFilter; +import dev.abelab.smartpointer.auth.LoginUserDetailsService; +import dev.abelab.smartpointer.auth.UserAuthenticationProvider; +import dev.abelab.smartpointer.property.AuthProperty; import lombok.RequiredArgsConstructor; /** @@ -17,6 +24,14 @@ @RequiredArgsConstructor public class WebSecurityConfig { + final AuthenticationConfiguration authenticationConfiguration; + + private final LoginUserDetailsService userDetailsService; + + private final PasswordEncoder passwordEncoder; + + private final AuthProperty authProperty; + @Bean public WebSecurityCustomizer webSecurityCustomizer() { return (web) -> web.ignoring().antMatchers("**.**", "/v3/api-docs/**", "/swagger-resources/**", "/swagger-ui/**", "/webjars/**", @@ -24,7 +39,7 @@ public WebSecurityCustomizer webSecurityCustomizer() { } @Bean - public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + public SecurityFilterChain filterChain(final HttpSecurity http) throws Exception { // CORSを有効化し、CSRF対策を無効化 http.cors().and().csrf().disable(); @@ -35,7 +50,20 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .antMatchers("/**").permitAll() // .anyRequest().authenticated(); + // JWT認証 + http.addFilter(new JWTAuthorizationFilter(this.authenticationConfiguration.getAuthenticationManager(), this.authProperty, + this.userDetailsService)) // + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); + return http.build(); } + @Bean + public UserAuthenticationProvider authenticationProvider() { + final var authenticationProvider = new UserAuthenticationProvider(); + authenticationProvider.setUserDetailsService(this.userDetailsService); + authenticationProvider.setPasswordEncoder(this.passwordEncoder); + return authenticationProvider; + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java index 4961dc69..30069e79 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java @@ -6,8 +6,6 @@ import org.springframework.web.socket.config.annotation.StompEndpointRegistry; import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; -import dev.abelab.smartpointer.infrastructure.api.StompHandshakeHandler; - /** * WebSocketの設定 */ @@ -25,8 +23,7 @@ public void configureMessageBroker(final MessageBrokerRegistry config) { public void registerStompEndpoints(final StompEndpointRegistry registry) { registry.addEndpoint("/ws") // // ハッカソンなので、全てのオリジンを許可してもOKとする - .setAllowedOriginPatterns("*") // - .setHandshakeHandler(new StompHandshakeHandler()); + .setAllowedOriginPatterns("*"); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java index 49c39e22..42491a03 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java @@ -61,16 +61,17 @@ public TimerModel(final Timer timer) { /** * タイマーを開始 * - * @param value タイマー時間[s] + * @param inputTime 入力時間 */ - public void start(final Integer value) { + public void start(final Integer inputTime) { if (!this.getStatus().equals(TimerStatus.READY)) { - throw new BadRequestException(ErrorCode.TIMER_IS_ALREADY_STARTED); + throw new BadRequestException(ErrorCode.TIMER_CANNOT_BE_STARTED); } this.setStatus(TimerStatus.RUNNING); - this.setInputTime(value); - this.setFinishAt(LocalDateTime.now().plusSeconds(value)); + this.setInputTime(inputTime); + this.setRemainingTimeAtPaused(Optional.empty()); + this.setFinishAt(LocalDateTime.now().plusSeconds(inputTime)); } /** @@ -80,7 +81,7 @@ public void start(final Integer value) { */ public void resume(final Integer value) { if (!this.getStatus().equals(TimerStatus.READY)) { - throw new BadRequestException(ErrorCode.TIMER_IS_ALREADY_STARTED); + throw new BadRequestException(ErrorCode.TIMER_CANNOT_BE_STARTED); } this.setStatus(TimerStatus.RUNNING); diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/service/TimerService.java b/app/src/main/java/dev/abelab/smartpointer/domain/service/TimerService.java new file mode 100644 index 00000000..dce4c73d --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/service/TimerService.java @@ -0,0 +1,27 @@ +package dev.abelab.smartpointer.domain.service; + +import org.springframework.stereotype.Service; + +import dev.abelab.smartpointer.exception.BadRequestException; +import dev.abelab.smartpointer.exception.ErrorCode; +import lombok.RequiredArgsConstructor; + +/** + * タイマーサービス + */ +@RequiredArgsConstructor +@Service +public class TimerService { + + /** + * 入力時間が有効かチェック + * + * @param inputTime 入力時間 + */ + public void checkIsInputTimeValid(final Integer inputTime) throws BadRequestException { + if (inputTime < 1 || inputTime > 3600) { + throw new BadRequestException(ErrorCode.INVALID_TIMER_INPUT_TIME); + } + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java index 7f92c32b..82ce32fa 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java @@ -19,13 +19,13 @@ public enum ErrorCode { INVALID_USER_NAME(1002, "exception.bad_request.invalid_user_name"), - TIMER_IS_ALREADY_STARTED(1003, "exception.bad_request.timer_is_already_started"), + TIMER_CANNOT_BE_STARTED(1003, "exception.bad_request.timer_cannot_be_started"), TIMER_IS_ALREADY_STOPPED(1004, "exception.bad_request.timer_is_already_stopped"), TIMER_CANNOT_BE_RESET(1005, "exception.bad_request.timer_cannot_be_reset"), - INVALID_TIMER_VALUE(1006, "exception.bad_request.invalid_timer_value"), + INVALID_TIMER_INPUT_TIME(1006, "exception.bad_request.invalid_timer_input_time"), /** * 401 Unauthorized: 2000~2999 diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalStompControllerAdvice.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalStompControllerAdvice.java index 5ffc6528..0b40854e 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalStompControllerAdvice.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalStompControllerAdvice.java @@ -65,7 +65,6 @@ private void broadcastException(final BaseException exception) { log.error(String.format("%d: %s", exception.getErrorCode().getCode(), message)); } - // TODO: 対象ユーザのみに例外を配信する this.simpMessagingTemplate.convertAndSend("/topic/exception", body); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/StompHandshakeHandler.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/StompHandshakeHandler.java deleted file mode 100644 index 5eca2a57..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/StompHandshakeHandler.java +++ /dev/null @@ -1,31 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api; - -import java.security.Principal; -import java.util.Map; -import java.util.Objects; - -import org.springframework.http.server.ServerHttpRequest; -import org.springframework.web.socket.WebSocketHandler; -import org.springframework.web.socket.server.support.DefaultHandshakeHandler; - -import lombok.extern.slf4j.Slf4j; - -/** - * STOMP Handshake Handler - */ -@Slf4j -public class StompHandshakeHandler extends DefaultHandshakeHandler { - - @Override - protected Principal determineUser(final ServerHttpRequest request, final WebSocketHandler wsHandler, - final Map attributes) { - // TODO: ルーム作成・入室APIでSecurityContextにログインユーザを入れれば多分動くはず! - final var principal = request.getPrincipal(); - if (Objects.nonNull(principal)) { - log.info(String.format("WebSocket connected: user=%s", principal.getName())); - } - - return principal; - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java new file mode 100644 index 00000000..e64c7f13 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java @@ -0,0 +1,56 @@ +package dev.abelab.smartpointer.infrastructure.api; + +import java.util.Map; +import java.util.Objects; + +import org.springframework.graphql.server.WebGraphQlRequest; +import org.springframework.graphql.server.WebGraphQlResponse; +import org.springframework.graphql.server.WebSocketGraphQlInterceptor; +import org.springframework.graphql.server.WebSocketSessionInfo; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; + +import dev.abelab.smartpointer.domain.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import reactor.core.publisher.Mono; + +/** + * GraphQL (over WebSocket) Authentication Interceptor + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class WebSocketGraphQLAuthenticationInterceptor implements WebSocketGraphQlInterceptor { + + private final UserRepository userRepository; + + @Override + public Mono intercept(final WebGraphQlRequest request, final Chain chain) { + log.info(request.getDocument()); + return WebSocketGraphQlInterceptor.super.intercept(request, chain); + } + + @Override + public Mono handleConnectionInitialization(final WebSocketSessionInfo sessionInfo, + final Map connectionInitPayload) { + final var principalName = SecurityContextHolder.getContext().getAuthentication().getName(); + log.info(String.format("GraphQL connection opened [user=%s]", principalName)); + + return WebSocketGraphQlInterceptor.super.handleConnectionInitialization(sessionInfo, connectionInitPayload); + } + + @Override + public void handleConnectionClosed(final WebSocketSessionInfo sessionInfo, final int statusCode, + final Map connectionInitPayload) { + final var authentication = SecurityContextHolder.getContext().getAuthentication(); + if (Objects.nonNull(authentication)) { + log.info(String.format("%d: GraphQL connection closed [user=%s]", statusCode, authentication.getName())); + this.userRepository.deleteById(authentication.getName()); + } else { + log.info(String.format("%d: GraphQL connection closed", statusCode)); + } + WebSocketGraphQlInterceptor.super.handleConnectionClosed(sessionInfo, statusCode, connectionInitPayload); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java index 19d5156f..bd48e008 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java @@ -12,8 +12,6 @@ /** * ルームコントローラ - * - * TODO: STOMPからGraphQLへの移行が完了したら削除する */ @RestController @RequestMapping(path = "/api/rooms", produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java index 3adf9996..0a556789 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java @@ -1,11 +1,19 @@ package dev.abelab.smartpointer.infrastructure.api.controller; +import java.util.Objects; + import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; +import dev.abelab.smartpointer.auth.LoginUserDetails; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.UnauthorizedException; import dev.abelab.smartpointer.infrastructure.api.type.Timer; import dev.abelab.smartpointer.usecase.timer.GetTimerUseCase; +import dev.abelab.smartpointer.usecase.timer.StartTimerUseCase; import lombok.RequiredArgsConstructor; /** @@ -17,9 +25,12 @@ public class TimerController { private final GetTimerUseCase getTimerUseCase; + private final StartTimerUseCase startTimerUseCase; + /** * タイマー取得API * + * @param roomId ルームID * @return タイマー */ @QueryMapping @@ -29,4 +40,22 @@ public Timer getTimer( // return new Timer(this.getTimerUseCase.handle(roomId)); } + /** + * タイマー開始API + * + * @param loginUser ログインユーザ + * @param inputTime 入力時間 + * @return タイマー + */ + @MutationMapping + public Timer startTimer( // + @AuthenticationPrincipal final LoginUserDetails loginUser, // + @Argument final Integer inputTime // + ) { + if (Objects.isNull(loginUser)) { + throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); + } + return new Timer(this.startTimerUseCase.handle(loginUser.getRoomId(), inputTime)); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java index ef4f522a..d4e19cf5 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java @@ -3,7 +3,6 @@ import org.springframework.messaging.handler.annotation.DestinationVariable; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.Payload; -import org.springframework.messaging.simp.SimpMessageHeaderAccessor; import org.springframework.stereotype.Controller; import dev.abelab.smartpointer.infrastructure.api.request.TimerResumeRequest; @@ -34,17 +33,13 @@ public class TimerStompController { * * @param roomId ルームID * @param requestBody タイマー開始リクエスト - * @param headers headers */ @MessageMapping("/rooms/{room_id}/timer/start") public void startTimer( // @DestinationVariable("room_id") final String roomId, // - @RequestValidated @Payload final TimerStartRequest requestBody, // - final SimpMessageHeaderAccessor headers // + @RequestValidated @Payload final TimerStartRequest requestBody // ) { - // TODO: ユーザ認証 - // final var authorization = headers.getFirstNativeHeader(HttpHeaders.AUTHORIZATION); - this.startTimerUseCase.handle(roomId, requestBody); + this.startTimerUseCase.handle(roomId, requestBody.getValue()); this.broadcastTimerUseCase.handle(roomId); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/PointerControlRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/PointerControlRequest.java index 39ac17eb..ffaed457 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/PointerControlRequest.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/PointerControlRequest.java @@ -32,6 +32,7 @@ public class PointerControlRequest implements BaseRequest { /** * バリデーション */ + @Override public void validate() {} } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java index 247595d4..58231f67 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java @@ -30,6 +30,7 @@ public class RoomJoinRequest implements BaseRequest { /** * バリデーション */ + @Override public void validate() { // ユーザ名 if (!ValidationUtil.checkStringLength(this.getName(), 1, 255)) { diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java index 85c3d2a0..8b1d2be9 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java @@ -30,10 +30,11 @@ public TimerResumeRequest(final String payload) { /** * バリデーション */ + @Override public void validate() { // 残り時間 if (this.getValue() < 1 || this.getValue() > 3600) { - throw new BadRequestException(ErrorCode.INVALID_TIMER_VALUE); + throw new BadRequestException(ErrorCode.INVALID_TIMER_INPUT_TIME); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java index ed9d98b2..d2f565cc 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java @@ -1,7 +1,5 @@ package dev.abelab.smartpointer.infrastructure.api.request; -import dev.abelab.smartpointer.exception.BadRequestException; -import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.util.JsonMessageUtil; import lombok.AllArgsConstructor; import lombok.Builder; @@ -30,11 +28,7 @@ public TimerStartRequest(final String payload) { /** * バリデーション */ - public void validate() { - // 設定時間 - if (this.getValue() < 1 || this.getValue() > 3600) { - throw new BadRequestException(ErrorCode.INVALID_TIMER_VALUE); - } - } + @Override + public void validate() {} } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java index eea15620..ebb24d85 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java @@ -25,8 +25,6 @@ public class PointerControlResponse { */ Boolean isActive; - // TODO: ポインター操作者を入れる - public PointerControlResponse(final PointerControlRequest requestBody, final Boolean isActive) { this.rotation = new PointerRotationResponse(requestBody); this.isActive = isActive; diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/validation/RequestValidator.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/validation/RequestValidator.java index 9d848f6f..8644df98 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/validation/RequestValidator.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/validation/RequestValidator.java @@ -8,7 +8,7 @@ public class RequestValidator implements ConstraintValidator { @Override - public void initialize(RequestValidated constraintAnnotation) {} + public void initialize(final RequestValidated constraintAnnotation) {} @Override public boolean isValid(final BaseRequest baseRequest, final ConstraintValidatorContext constraintValidatorContext) { diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/TimerFactory.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/TimerFactory.java index 23e97294..93aff3d1 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/TimerFactory.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/TimerFactory.java @@ -22,6 +22,7 @@ public Timer createTimer(final TimerModel timerModel) { .roomId(timerModel.getRoomId()) // .status(timerModel.getStatus().getId()) // .inputTime(timerModel.getInputTime()) // + .remainingTimeAtPaused(timerModel.getRemainingTimeAtPaused().orElse(null)) // .finishAt(timerModel.getFinishAt()) // .build(); } diff --git a/app/src/main/java/dev/abelab/smartpointer/plugin/IgnoreTablePlugin.java b/app/src/main/java/dev/abelab/smartpointer/plugin/IgnoreTablePlugin.java index 48d1870d..a6de0617 100644 --- a/app/src/main/java/dev/abelab/smartpointer/plugin/IgnoreTablePlugin.java +++ b/app/src/main/java/dev/abelab/smartpointer/plugin/IgnoreTablePlugin.java @@ -45,7 +45,7 @@ public boolean clientGenerated(final Interface interfaze, final IntrospectedTabl } @Override - public boolean sqlMapGenerated(GeneratedXmlFile sqlMap, IntrospectedTable introspectedTable) { + public boolean sqlMapGenerated(final GeneratedXmlFile sqlMap, final IntrospectedTable introspectedTable) { return this.checkIsTableToGenerate(introspectedTable); } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java index c8ec3bf5..8bc1b712 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase.java @@ -3,11 +3,12 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import dev.abelab.smartpointer.domain.model.TimerModel; import dev.abelab.smartpointer.domain.repository.RoomRepository; import dev.abelab.smartpointer.domain.repository.TimerRepository; +import dev.abelab.smartpointer.domain.service.TimerService; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.NotFoundException; -import dev.abelab.smartpointer.infrastructure.api.request.TimerStartRequest; import lombok.RequiredArgsConstructor; /** @@ -21,26 +22,34 @@ public class StartTimerUseCase { private final TimerRepository timerRepository; + private final TimerService timerService; + /** * Handle UseCase - * + * * @param roomId ルームID - * @param requestBody タイマー開始リクエスト + * @param inputTime 入力時間 + * @return タイマー */ @Transactional - public void handle(final String roomId, final TimerStartRequest requestBody) { + public TimerModel handle(final String roomId, final Integer inputTime) { // ルームの存在チェック if (!this.roomRepository.existsById(roomId)) { throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); } + // 入力時間チェック + this.timerService.checkIsInputTimeValid(inputTime); + // タイマーを取得 final var timer = this.timerRepository.selectByRoomId(roomId) // .orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_TIMER)); // タイマーを更新 - timer.start(requestBody.getValue()); + timer.start(inputTime); this.timerRepository.upsert(timer); + + return timer; } } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java index a41bb49f..a4907858 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java @@ -53,7 +53,6 @@ public AccessTokenResponse handle(final String roomId, final String passcode, fi } // ユーザ名チェック - // TODO: Validatorを作成し、Controllerで400チェックする this.userService.checkIsNameValid(userName); this.userService.checkIsNameAlreadyUsed(roomId, userName); diff --git a/app/src/main/resources/db/mapper/TimerMapper.xml b/app/src/main/resources/db/mapper/TimerMapper.xml index f727cc29..63918dd6 100644 --- a/app/src/main/resources/db/mapper/TimerMapper.xml +++ b/app/src/main/resources/db/mapper/TimerMapper.xml @@ -3,12 +3,13 @@ - insert into `timer` (`room_id`, `status`, `input_time`, `finish_at`) - values (#{roomId}, #{status}, #{inputTime}, #{finishAt}) - ON DUPLICATE KEY UPDATE `room_id` = #{roomId}, - `status` = #{status}, - `input_time` = #{inputTime}, - `finish_at` = #{finishAt} + insert into `timer` (`room_id`, `status`, `input_time`, `remaining_time_at_paused`, `finish_at`) + values (#{roomId}, #{status}, #{inputTime}, #{remainingTimeAtPaused}, #{finishAt}) + ON DUPLICATE KEY UPDATE `room_id` = #{roomId}, + `status` = #{status}, + `input_time` = #{inputTime}, + `remaining_time_at_paused` = #{remainingTimeAtPaused}, + `finish_at` = #{finishAt} diff --git a/app/src/main/resources/i18n/messages.yml b/app/src/main/resources/i18n/messages.yml index 913c7df4..a0092ff9 100644 --- a/app/src/main/resources/i18n/messages.yml +++ b/app/src/main/resources/i18n/messages.yml @@ -3,10 +3,10 @@ exception: validation_error: 不正なリクエストです。 invalid_request_parameter: 不正なリクエストです。 invalid_user_name: ユーザ名は1~255文字にしてください。 - timer_is_already_started: タイマーは既に開始済みです。 + timer_cannot_be_started: タイマーを開始できません。 timer_is_already_stopped: タイマーは既に停止済みです。 timer_cannot_be_reset: 実行中のタイマーはリセットできません。 - invalid_timer_value: タイマー時間は1〜3600秒にしてください。 + invalid_timer_input_time: 1〜3600秒にしてください。 unauthorized: user_not_logged_in: ユーザはログインしていません。 incorrect_room_passcode: パスコードが間違えています。 diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy index 01ce037a..a043f9fb 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy @@ -4,6 +4,7 @@ import dev.abelab.smartpointer.AbstractSpecification import dev.abelab.smartpointer.domain.repository.RoomRepository import dev.abelab.smartpointer.domain.repository.TimerRepository import dev.abelab.smartpointer.domain.repository.UserRepository +import dev.abelab.smartpointer.domain.service.TimerService import dev.abelab.smartpointer.domain.service.UserService import org.spockframework.spring.SpringBean @@ -24,4 +25,7 @@ abstract class AbstractUseCase_UT extends AbstractSpecification { @SpringBean UserService userService = Mock() + @SpringBean + TimerService timerService = Mock() + } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy index 3c2e29b3..523e58cc 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy @@ -6,7 +6,6 @@ import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper -import dev.abelab.smartpointer.infrastructure.api.request.TimerStartRequest import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired @@ -23,26 +22,26 @@ class StartTimerUseCase_UT extends AbstractUseCase_UT { final timer = Spy(TimerModel) final room = RandomHelper.mock(RoomModel) - final requestBody = RandomHelper.mock(TimerStartRequest) + final inputTime = 100 when: - this.sut.handle(room.id, requestBody) + this.sut.handle(room.id, inputTime) then: noExceptionThrown() 1 * this.roomRepository.existsById(room.id) >> true 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.of(timer) - 1 * timer.start(requestBody.value) + 1 * timer.start(inputTime) } def "handle: ルームが存在しない場合は404エラー"() { given: final room = RandomHelper.mock(RoomModel) - final requestBody = RandomHelper.mock(TimerStartRequest) + final inputTime = 100 when: - this.sut.handle(room.id, requestBody) + this.sut.handle(room.id, inputTime) then: 1 * this.roomRepository.existsById(room.id) >> false @@ -54,10 +53,10 @@ class StartTimerUseCase_UT extends AbstractUseCase_UT { given: final room = RandomHelper.mock(RoomModel) - final requestBody = RandomHelper.mock(TimerStartRequest) + final inputTime = 100 when: - this.sut.handle(room.id, requestBody) + this.sut.handle(room.id, inputTime) then: 1 * this.roomRepository.existsById(room.id) >> true From ecdadb6cbd85c797e79351c41c0ec59abc4fd688 Mon Sep 17 00:00:00 2001 From: averak Date: Thu, 10 Nov 2022 14:14:54 +0900 Subject: [PATCH 086/189] =?UTF-8?q?[test]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E9=96=8B=E5=A7=8BAPI=E3=81=AE=E7=B5=B1=E5=90=88?= =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/domain/model/TimerModel.java | 3 +- .../domain/model/TimerModel_UT.groovy | 6 +- .../controller/AbstractController_IT.groovy | 116 ++++++++++++-- .../HealthCheckController_IT.groovy | 2 +- .../api/controller/RoomController_IT.groovy | 6 +- .../api/controller/TimerController_IT.groovy | 150 +++++++++++++++++- .../api/controller/UserController_IT.groovy | 14 +- 7 files changed, 267 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java index 42491a03..8d25f5d1 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java @@ -42,7 +42,8 @@ public class TimerModel implements Serializable { /** * 一時停止時点での残り時間 [s] */ - Optional remainingTimeAtPaused; + @Builder.Default + Optional remainingTimeAtPaused = Optional.empty(); /** * 終了時刻 diff --git a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy index b73d5e06..d93e6e1d 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy @@ -26,6 +26,7 @@ class TimerModel_UT extends AbstractSpecification { given: final timer = TimerModel.builder() .status(TimerStatus.READY) + .remainingTimeAtPaused(Optional.of(10)) .build() when: @@ -33,6 +34,7 @@ class TimerModel_UT extends AbstractSpecification { then: timer.inputTime == 60 + timer.remainingTimeAtPaused.isEmpty() } def "start: 実行中のタイマーは開始不可"() { @@ -46,7 +48,7 @@ class TimerModel_UT extends AbstractSpecification { then: final BaseException exception = thrown() - verifyException(exception, new BadRequestException(ErrorCode.TIMER_IS_ALREADY_STARTED)) + verifyException(exception, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_STARTED)) } def "resume: タイマーを再開する"() { @@ -74,7 +76,7 @@ class TimerModel_UT extends AbstractSpecification { then: final BaseException exception = thrown() - verifyException(exception, new BadRequestException(ErrorCode.TIMER_IS_ALREADY_STARTED)) + verifyException(exception, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_STARTED)) } def "stop: 実行中のタイマーを停止する"() { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy index 22728a7e..8f956cf4 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy @@ -1,11 +1,15 @@ package dev.abelab.smartpointer.infrastructure.api.controller import dev.abelab.smartpointer.AbstractDatabaseSpecification +import dev.abelab.smartpointer.domain.model.UserModel import dev.abelab.smartpointer.exception.BaseException +import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.property.AuthProperty +import io.jsonwebtoken.Jwts +import io.jsonwebtoken.SignatureAlgorithm import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.MessageSource -import org.springframework.graphql.test.tester.GraphQlTester +import org.springframework.graphql.test.tester.HttpGraphQlTester import org.springframework.graphql.test.tester.WebSocketGraphQlTester import org.springframework.web.reactive.socket.client.ReactorNettyWebSocketClient @@ -14,7 +18,10 @@ import org.springframework.web.reactive.socket.client.ReactorNettyWebSocketClien */ abstract class AbstractController_IT extends AbstractDatabaseSpecification { - private GraphQlTester graphQlTester + private WebSocketGraphQlTester webSocketGraphQlTester + + @Autowired + private HttpGraphQlTester httpGraphQlTester @Autowired private MessageSource messageSource @@ -23,15 +30,15 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { protected AuthProperty authProperty /** - * Execute query / return response + * Execute query with HTTP / return response * * @param query query * @param operation operation * @param clazz clazz * @return response */ - def T execute(final String query, final String operation, final Class clazz) { - final response = this.graphQlTester.document(query).execute() + protected T executeHttp(final String query, final String operation, final Class clazz) { + final response = this.httpGraphQlTester.document(query).execute() .path(operation) .entity(clazz) @@ -39,14 +46,55 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { } /** - * Execute query / verify exception + * Execute query with HTTP / verify exception * * @param query query * @param exception expected exception */ - def execute(final String query, final BaseException exception) { + protected executeHttp(final String query, final BaseException exception) { final expectedErrorMessage = this.getErrorMessage(exception) - this.graphQlTester.document(query).execute() + this.httpGraphQlTester.document(query).execute() + .errors() + .satisfy({ + assert it[0].errorType == exception.errorType + assert it[0].message == expectedErrorMessage + }) + } + + /** + * Execute query with WebSocket + * + * @param query query + */ + protected void executeWebSocket(final String query) { + this.webSocketGraphQlTester.document(query).execute() + } + + /** + * Execute query with WebSocket / return response + * + * @param query query + * @param operation operation + * @param clazz clazz + * @return response + */ + protected T executeWebSocket(final String query, final String operation, final Class clazz) { + final response = this.webSocketGraphQlTester.document(query).execute() + .path(operation) + .entity(clazz) + + return response.get() + } + + /** + * Execute query with WebSocket / verify exception + * + * @param query query + * @param exception expected exception + */ + protected executeWebSocket(final String query, final BaseException exception) { + final expectedErrorMessage = this.getErrorMessage(exception) + this.webSocketGraphQlTester.document(query).execute() .errors() .satisfy({ assert it[0].errorType == exception.errorType @@ -67,13 +115,53 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { } /** - * setup before test class + * ログイン + * + * @param roomId ルームID + * @return ログインユーザ + */ + protected UserModel login(final String roomId) { + final user = UserModel.builder() + .roomId(roomId) + .name(RandomHelper.alphanumeric(10)) + .build() + + sql.dataSet("user").add( + id: user.id, + room_id: user.roomId, + name: user.name, + ) + + return user + } + + /** + * GraphQL(over WebSocket)を開始 + * + * @param user ユーザ + */ + protected void connectWebSocketGraphQL(final UserModel user) { + final var jwt = Jwts.builder() + .setSubject(user.id) + .setIssuer(this.authProperty.getJwt().getIssuer()) + .setIssuedAt(new Date()) + .setExpiration(new Date(System.currentTimeMillis() + this.authProperty.getTtl() * 1000)) + .signWith(SignatureAlgorithm.HS512, this.authProperty.getJwt().getSecret().getBytes()) + .compact() + this.webSocketGraphQlTester = WebSocketGraphQlTester + .builder("ws://localhost:${PORT}/graphql-ws", new ReactorNettyWebSocketClient()) + .header("Authorization", "Bearer " + jwt) + .build() + } + + + /** + * GraphQL(over WebSocket)を開始 */ - def setup() { - this.graphQlTester = WebSocketGraphQlTester.builder( // - "ws://localhost:${PORT}/graphql-ws", - new ReactorNettyWebSocketClient() // - ).build() + protected void connectWebSocketGraphQL() { + this.webSocketGraphQlTester = WebSocketGraphQlTester + .builder("ws://localhost:${PORT}/graphql-ws", new ReactorNettyWebSocketClient()) + .build() } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy index 518a0b4f..1c2d5944 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/HealthCheckController_IT.groovy @@ -13,7 +13,7 @@ class HealthCheckController_IT extends AbstractController_IT { health } """ - final response = this.execute(query, "health", Boolean) + final response = this.executeHttp(query, "health", Boolean) then: response diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy index c9b0f3f0..cc16d1c6 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy @@ -22,7 +22,7 @@ class RoomController_IT extends AbstractController_IT { } } """ - final response = this.execute(query, "createRoom", RoomResponse) + final response = this.executeHttp(query, "createRoom", RoomResponse) then: final createdRoom = sql.firstRow("SELECT * FROM room") @@ -52,7 +52,7 @@ class RoomController_IT extends AbstractController_IT { deleteRoom(roomId: "00000000-0000-0000-0000-000000000000") } """ - final response = this.execute(query, "deleteRoom", String) + final response = this.executeHttp(query, "deleteRoom", String) then: response == "00000000-0000-0000-0000-000000000000" @@ -77,7 +77,7 @@ class RoomController_IT extends AbstractController_IT { deleteRoom(roomId: "00000000-0000-0000-0000-000000000001") } """ - this.execute(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + this.executeHttp(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy index 440ade9f..11d42433 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -2,8 +2,10 @@ package dev.abelab.smartpointer.infrastructure.api.controller import dev.abelab.smartpointer.enums.TimerStatus +import dev.abelab.smartpointer.exception.BadRequestException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.exception.UnauthorizedException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper import dev.abelab.smartpointer.infrastructure.api.type.Timer @@ -40,7 +42,7 @@ class TimerController_IT extends AbstractController_IT { } } """ - final response = this.execute(query, "getTimer", Timer) + final response = this.executeHttp(query, "getTimer", Timer) then: response.inputTime == expectedInputTime @@ -80,7 +82,7 @@ class TimerController_IT extends AbstractController_IT { } } """ - this.execute(query, new NotFoundException(expectedErrorCode)) + this.executeHttp(query, new NotFoundException(expectedErrorCode)) where: inputRoomId || expectedErrorCode @@ -88,4 +90,148 @@ class TimerController_IT extends AbstractController_IT { "00000000-0000-0000-0000-000000000001" | ErrorCode.NOT_FOUND_ROOM } + def "タイマー開始API: 正常系 タイマーを開始できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + when: + final query = + """ + mutation { + startTimer(inputTime: ${inputTime}) { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + final response = this.executeWebSocket(query, "startTimer", Timer) + + then: + final updatedTimer = sql.firstRow("SELECT * FROM timer") + updatedTimer.input_time == inputTime + updatedTimer.remaining_time_at_paused == null + + response.inputTime == inputTime + response.remainingTimeAtPaused == null + + where: + inputTime << [1, 3600] + } + + def "タイマー開始API: 異常系 リクエストボディのバリデーション"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + expect: + final query = + """ + mutation { + startTimer(inputTime: ${inputTime}) { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.executeWebSocket(query, new BadRequestException(expectedErrorCode)) + + where: + inputTime || expectedErrorCode + 0 || ErrorCode.INVALID_TIMER_INPUT_TIME + 3601 || ErrorCode.INVALID_TIMER_INPUT_TIME + } + + def "タイマー開始API: 異常系 タイマーが準備中以外の場合は400エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | timerStatus.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + expect: + final query = + """ + mutation { + startTimer(inputTime: 100) { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.executeWebSocket(query, new BadRequestException(expectedErrorCode)) + + where: + timerStatus || expectedErrorCode + TimerStatus.RUNNING || ErrorCode.TIMER_CANNOT_BE_STARTED + TimerStatus.PAUSED || ErrorCode.TIMER_CANNOT_BE_STARTED + } + + def "タイマー開始API: 異常系 未認証の場合は401エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + this.connectWebSocketGraphQL() + + expect: + final query = + """ + mutation { + startTimer(inputTime: 100) { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + } + } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy index 8240eacf..a7348644 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy @@ -43,7 +43,7 @@ class UserController_IT extends AbstractController_IT { } } """ - final response = this.execute(query, "getUsers", UsersResponse) + final response = this.executeHttp(query, "getUsers", UsersResponse) then: response.users*.name == expectedUserNames @@ -68,7 +68,7 @@ class UserController_IT extends AbstractController_IT { } } """ - this.execute(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + this.executeHttp(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) } def "ルーム入室API: 正常系 入室に成功するとアクセストークンを返す"() { @@ -94,7 +94,7 @@ class UserController_IT extends AbstractController_IT { } } """ - final response = this.execute(query, "joinRoom", AccessTokenResponse) + final response = this.executeHttp(query, "joinRoom", AccessTokenResponse) then: response.tokenType == this.authProperty.tokenType @@ -135,7 +135,7 @@ class UserController_IT extends AbstractController_IT { } } """ - this.execute(query, new BadRequestException(expectedErrorCode)) + this.executeHttp(query, new BadRequestException(expectedErrorCode)) where: inputUserName || expectedErrorCode @@ -166,7 +166,7 @@ class UserController_IT extends AbstractController_IT { } } """ - this.execute(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + this.executeHttp(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) } def "ルーム入室API: 異常系 パスコードが間違えている場合は401エラー"() { @@ -192,7 +192,7 @@ class UserController_IT extends AbstractController_IT { } } """ - this.execute(query, new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE)) + this.executeHttp(query, new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE)) } def "ルーム入室API: 異常系 ユーザ名が既に使われている場合は400エラー"() { @@ -223,7 +223,7 @@ class UserController_IT extends AbstractController_IT { } } """ - this.execute(query, new BadRequestException(ErrorCode.USER_NAME_IS_ALREADY_EXISTS)) + this.executeHttp(query, new BadRequestException(ErrorCode.USER_NAME_IS_ALREADY_EXISTS)) } } From cc03321d13c74fb94e853b2c4e7a4a42139deb8d Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Thu, 10 Nov 2022 09:46:41 +0900 Subject: [PATCH 087/189] =?UTF-8?q?=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF?= =?UTF-8?q?=E3=83=BC=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=99=E3=82=8B=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=82=B9=E3=83=97=E3=83=AC=E3=82=A4=E3=82=92=E9=81=B8?= =?UTF-8?q?=E6=8A=9E=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/controller/index.ts | 41 ++++++++++++++++++- desktop/packages/main/src/model/index.ts | 19 ++++++++- desktop/packages/main/src/types.ts | 4 ++ desktop/packages/main/src/view/tray.ts | 30 +++++++++++++- .../main/src/view/window/pointerOverlay.ts | 18 ++++++++ 5 files changed, 109 insertions(+), 3 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index b4eda22f..b1faaed4 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -5,6 +5,7 @@ import { User, } from "@smartpointer-desktop/shared"; import { randomUUID } from "crypto"; +import { screen } from "electron"; import { request } from "@/api"; import { graphql } from "@/gql"; @@ -22,6 +23,36 @@ export const controller = { model.initialize(store.get("customPointerTypes")); view.tray.update(); + + screen.on("display-added", () => { + view.tray.update(); + }); + + screen.on("display-removed", (_, oldDisplay) => { + const state = model.state; + if (state.status !== "CREATED") { + return; + } + + if (state.displayToShowPointer === oldDisplay.id) { + controller.updateDisplayToShowPointer(screen.getPrimaryDisplay().id); + } else { + view.tray.update(); + } + }); + + screen.on("display-metrics-changed", (_, display) => { + const state = model.state; + if (state.status !== "CREATED") { + return; + } + + if (state.displayToShowPointer === display.id) { + view.window.pointerOverlay.setBoundsToDisplay(); + } + + view.tray.update(); + }); }, createRoom: async () => { @@ -42,7 +73,7 @@ export const controller = { await activate(); - model.createdRoom(data.createRoom); + model.createdRoom(data.createRoom, screen.getPrimaryDisplay().id); listenRoomSubscription(data.createRoom.id); @@ -131,4 +162,12 @@ export const controller = { showCustomPointerTypes: () => { view.window.customPointerType.show(); }, + + updateDisplayToShowPointer: (displayId: number) => { + model.updatedDisplayToShowPointer(displayId); + + view.window.pointerOverlay.setBoundsToDisplay(); + + view.tray.update(); + }, }; diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index efc1db59..1dfe8e39 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -5,6 +5,7 @@ import { User, CustomPointerType, } from "@smartpointer-desktop/shared"; +import { Display } from "electron"; import { Room, State } from "@/types"; @@ -33,7 +34,7 @@ export const model = { }; }, - createdRoom: (room: Room) => { + createdRoom: (room: Room, displayToShowPointer: Display["id"]) => { if (state.status !== "CREATING") { throw new Error("Cannot create room when not in CREATING state"); } @@ -45,6 +46,7 @@ export const model = { joinedUsers: new Map(), activePointers: new Map(), selectedPointerType: builtInPointers[0]!, + displayToShowPointer, }; }, @@ -59,6 +61,8 @@ export const model = { room: undefined, joinedUsers: undefined, activePointers: undefined, + selectedPointerType: undefined, + displayToShowPointer: undefined, }; }, @@ -159,4 +163,17 @@ export const model = { ), }; }, + + updatedDisplayToShowPointer: (displayToShowPointer: Display["id"]) => { + if (state.status !== "CREATED") { + throw new Error( + "Cannot update display to show pointer when not in CREATED state" + ); + } + + state = { + ...state, + displayToShowPointer, + }; + }, }; diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index a09c87e8..1fd2fa99 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -4,6 +4,7 @@ import { PointerType, User, } from "@smartpointer-desktop/shared"; +import { Display } from "electron"; export type Room = { id: string; @@ -22,6 +23,8 @@ export type State = Readonly< room?: undefined; joinedUsers?: undefined; activePointers?: undefined; + selectedPointerType?: undefined; + displayToShowPointer?: undefined; } | { status: "CREATED"; @@ -29,6 +32,7 @@ export type State = Readonly< joinedUsers: Map; activePointers: Map; selectedPointerType: PointerType; + displayToShowPointer: Display["id"]; } ) & { customPointerTypes: CustomPointerType[]; diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index 3814021f..fd253fbc 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -1,5 +1,11 @@ import { builtInPointers } from "@smartpointer-desktop/shared"; -import { Menu, MenuItemConstructorOptions, nativeTheme, Tray } from "electron"; +import { + Menu, + MenuItemConstructorOptions, + nativeTheme, + screen, + Tray, +} from "electron"; import { join } from "path"; import { assetsPath } from "../path"; @@ -67,6 +73,27 @@ const showInviteLinkWindowTemplate: MenuTemplate = () => [ }, ]; +const displayListTemplate: MenuTemplateWithState< + State & { status: "CREATED" } +> = (state) => [ + { + label: "ディスプレイ", + submenu: screen.getAllDisplays().map((display, index) => ({ + label: [ + "ディスプレイ", + index + 1, + `(${display.bounds.width}x${display.bounds.height})`, + display.internal ? "(内蔵)" : "", + ] + .filter(Boolean) + .join(" "), + type: "radio", + checked: state.displayToShowPointer === display.id, + click: () => controller.updateDisplayToShowPointer(display.id), + })), + }, +]; + const closeRoomTemplate: MenuTemplate = () => [ { label: "ルームを終了", @@ -114,6 +141,7 @@ const createdRoomMenuTemplate: MenuTemplateWithState< ...customPointerSetting(), ...memberListTemplate(state), ...showInviteLinkWindowTemplate(), + ...displayListTemplate(state), { type: "separator" }, ...closeRoomTemplate(), { type: "separator" }, diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 3344e526..48ab9e1d 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -109,6 +109,24 @@ export const pointerOverlay = { overlayWindow.webContents.send("onUpdatePointerType", message); }, + setBoundsToDisplay: () => { + const state = model.state; + + if (state.status !== "CREATED") { + throw new Error("Cannot set bounds when not in CREATED state"); + } + + if (overlayWindow === null || overlayWindow.isDestroyed()) { + return; + } + + const bounds = screen + .getAllDisplays() + .find((display) => display.id === state.displayToShowPointer)!.workArea; + + overlayWindow.setBounds(bounds, false); + }, + close: () => { overlayWindow?.close(); }, From 25e67b6ffaf8fd8dc84a93b2e3ce635062577d42 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 02:03:23 +0900 Subject: [PATCH 088/189] =?UTF-8?q?[feat]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E8=B3=BC=E8=AA=ADAPI=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 27 +++++++++++++++++ .../api/controller/TimerController.java | 30 +++++++++++++++++-- 2 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java new file mode 100644 index 00000000..6067dd93 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -0,0 +1,27 @@ +package dev.abelab.smartpointer.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import dev.abelab.smartpointer.domain.model.TimerModel; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Sinks; +import reactor.util.concurrent.Queues; + +/** + * GraphQL Subscriptionの設定 + */ +@Configuration +public class GraphQLSubscriptionConfig { + + @Bean + public Sinks.Many timerSink() { + return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); + } + + @Bean + public Flux timerFlux(final Sinks.Many timerSink) { + return timerSink.asFlux(); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java index 0a556789..1375d716 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java @@ -2,19 +2,24 @@ import java.util.Objects; +import org.reactivestreams.Publisher; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.graphql.data.method.annotation.SubscriptionMapping; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; import dev.abelab.smartpointer.auth.LoginUserDetails; +import dev.abelab.smartpointer.domain.model.TimerModel; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.UnauthorizedException; import dev.abelab.smartpointer.infrastructure.api.type.Timer; import dev.abelab.smartpointer.usecase.timer.GetTimerUseCase; import dev.abelab.smartpointer.usecase.timer.StartTimerUseCase; import lombok.RequiredArgsConstructor; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Sinks; /** * タイマーコントローラ @@ -23,8 +28,11 @@ @RequiredArgsConstructor public class TimerController { - private final GetTimerUseCase getTimerUseCase; + private final Flux timerFlux; + + private final Sinks.Many timerSink; + private final GetTimerUseCase getTimerUseCase; private final StartTimerUseCase startTimerUseCase; /** @@ -55,7 +63,25 @@ public Timer startTimer( // if (Objects.isNull(loginUser)) { throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); } - return new Timer(this.startTimerUseCase.handle(loginUser.getRoomId(), inputTime)); + + final var timer = this.startTimerUseCase.handle(loginUser.getRoomId(), inputTime); + this.timerSink.tryEmitNext(timer); + return new Timer(timer); + } + + /** + * タイマー購読API + * + * @param roomId ルームID + * @return タイマー + */ + @SubscriptionMapping + public Publisher subscribeToTimer( // + @Argument final String roomId // + ) { + return this.timerFlux // + .filter(timerModel -> timerModel.getRoomId().equals(roomId)) // + .map(Timer::new); } } From a78af5d5e2efa799437aa535a3e295f2d841d3a0 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 02:51:30 +0900 Subject: [PATCH 089/189] =?UTF-8?q?[test]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E8=B3=BC=E8=AA=ADAPI=E3=81=AE=E7=B5=B1=E5=90=88?= =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 + .../api/controller/TimerController.java | 1 + .../controller/AbstractController_IT.groovy | 21 ++++ .../api/controller/TimerController_IT.groovy | 113 +++++++++++++++++- 4 files changed, 135 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 2a89b2e4..42bbe1d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -83,6 +83,7 @@ dependencies { implementation "org.springframework.boot:spring-boot-devtools:${SPRING_BOOT_VERSION}" testImplementation "org.springframework.boot:spring-boot-starter-test:${SPRING_BOOT_VERSION}" testImplementation "org.springframework.graphql:spring-graphql-test:1.0.2" + testImplementation "io.projectreactor:reactor-test:3.5.0" annotationProcessor "org.springframework.boot:spring-boot-configuration-processor:${SPRING_BOOT_VERSION}" // spring security diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java index 1375d716..0e70df7c 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java @@ -33,6 +33,7 @@ public class TimerController { private final Sinks.Many timerSink; private final GetTimerUseCase getTimerUseCase; + private final StartTimerUseCase startTimerUseCase; /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy index 8f956cf4..025b226d 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy @@ -12,6 +12,10 @@ import org.springframework.context.MessageSource import org.springframework.graphql.test.tester.HttpGraphQlTester import org.springframework.graphql.test.tester.WebSocketGraphQlTester import org.springframework.web.reactive.socket.client.ReactorNettyWebSocketClient +import reactor.core.publisher.Flux +import reactor.test.StepVerifier + +import java.time.Duration /** * Controller統合テストの基底クラス @@ -102,6 +106,19 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { }) } + /** + * Execute subscription query with WebSocket / return response + * + * @param query query + * @param operation operation + * @param clazz clazz + * @return response + */ + protected Flux executeWebSocketSubscription(final String query, final String operation, final Class clazz) { + return this.webSocketGraphQlTester.document(query).executeSubscription() + .toFlux(operation, clazz) + } + /** * エラーメッセージを取得 * @@ -164,4 +181,8 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { .build() } + def setup() { + StepVerifier.setDefaultTimeout(Duration.ofSeconds(5)) + } + } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy index 11d42433..86f641d2 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -1,6 +1,6 @@ package dev.abelab.smartpointer.infrastructure.api.controller - +import dev.abelab.smartpointer.domain.model.TimerModel import dev.abelab.smartpointer.enums.TimerStatus import dev.abelab.smartpointer.exception.BadRequestException import dev.abelab.smartpointer.exception.ErrorCode @@ -9,12 +9,24 @@ import dev.abelab.smartpointer.exception.UnauthorizedException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper import dev.abelab.smartpointer.infrastructure.api.type.Timer +import org.springframework.beans.factory.annotation.Autowired +import reactor.core.publisher.Flux +import reactor.core.publisher.Sinks +import reactor.test.StepVerifier + +import java.time.LocalDateTime /** * TimerControllerの統合テスト */ class TimerController_IT extends AbstractController_IT { + @Autowired + Flux timerFlux + + @Autowired + Sinks.Many timerSink + def "タイマー取得API: 正常系 タイマーを取得できる"() { given: // @formatter:off @@ -128,6 +140,13 @@ class TimerController_IT extends AbstractController_IT { response.inputTime == inputTime response.remainingTimeAtPaused == null + StepVerifier.create(this.timerFlux) + .expectNextMatches({ + it.inputTime == inputTime && it.remainingTimeAtPaused == Optional.empty() && it.status == TimerStatus.RUNNING + }) + .thenCancel() + .verify() + where: inputTime << [1, 3600] } @@ -234,4 +253,96 @@ class TimerController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } + def "タイマー購読API: 正常系 タイマー変更イベントを購読できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + final query = """ + subscription { + subscribeToTimer(roomId: "${loginUser.roomId}") { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToTimer", Timer) + + when: + final timer = TimerModel.builder() + .roomId(loginUser.roomId) + .inputTime(100) + .remainingTimeAtPaused(Optional.empty()) + .finishAt(LocalDateTime.now()) + .status(TimerStatus.RUNNING) + .build() + this.timerSink.tryEmitNext(timer) + + then: + StepVerifier.create(response) + .expectNext(new Timer(timer)) + .thenCancel() + .verify() + } + + def "タイマー購読API: 正常系 別ルームのタイマー変更は通知されない"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + "00000000-0000-0000-0000-000000000001" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + "00000000-0000-0000-0000-000000000001" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + final query = """ + subscription { + subscribeToTimer(roomId: "${loginUser.roomId}") { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToTimer", Timer) + + when: + final timer = TimerModel.builder() + .roomId(loginUser.roomId + "...") + .inputTime(100) + .remainingTimeAtPaused(Optional.empty()) + .finishAt(LocalDateTime.now()) + .status(TimerStatus.RUNNING) + .build() + this.timerSink.tryEmitNext(timer) + + then: + StepVerifier.create(response) + .expectNextCount(0) + .thenCancel() + .verify() + } + } From 9c29d61cd2e059fb414da2df1b93fe7a18924690 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 04:58:43 +0900 Subject: [PATCH 090/189] =?UTF-8?q?[feat]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E4=B8=80=E6=99=82=E5=81=9C=E6=AD=A2API=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/domain/model/TimerModel.java | 9 +++++--- .../smartpointer/exception/ErrorCode.java | 2 +- .../api/controller/TimerController.java | 22 +++++++++++++++++++ .../api/controller/TimerStompController.java | 4 ++-- ...merUseCase.java => PauseTimerUseCase.java} | 12 ++++++---- .../main/resources/graphql/schema.graphqls | 9 ++------ app/src/main/resources/i18n/messages.yml | 2 +- .../domain/model/TimerModel_UT.groovy | 14 +++++++----- ..._UT.groovy => PauseTimerUseCase_UT.groovy} | 8 +++---- 9 files changed, 55 insertions(+), 27 deletions(-) rename app/src/main/java/dev/abelab/smartpointer/usecase/timer/{StopTimerUseCase.java => PauseTimerUseCase.java} (81%) rename app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/{StopTimerUseCase_UT.groovy => PauseTimerUseCase_UT.groovy} (91%) diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java index 8d25f5d1..6c0cbede 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java @@ -2,6 +2,7 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; import java.util.Optional; import dev.abelab.smartpointer.enums.TimerStatus; @@ -90,13 +91,15 @@ public void resume(final Integer value) { } /** - * タイマーを停止 + * タイマーを一時停止 */ - public void stop() { + public void pause() { if (!this.getStatus().equals(TimerStatus.RUNNING)) { - throw new BadRequestException(ErrorCode.TIMER_IS_ALREADY_STOPPED); + throw new BadRequestException(ErrorCode.TIMER_CANNOT_BE_PAUSED); } + // レイテンシによっては残り時間が0sを下回る可能性があるが、とりあえず考慮しない + this.setRemainingTimeAtPaused(Optional.of(Math.toIntExact(ChronoUnit.SECONDS.between(LocalDateTime.now(), this.finishAt)))); this.setStatus(TimerStatus.READY); } diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java index 82ce32fa..490f94ba 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java @@ -21,7 +21,7 @@ public enum ErrorCode { TIMER_CANNOT_BE_STARTED(1003, "exception.bad_request.timer_cannot_be_started"), - TIMER_IS_ALREADY_STOPPED(1004, "exception.bad_request.timer_is_already_stopped"), + TIMER_CANNOT_BE_PAUSED(1004, "exception.bad_request.timer_cannot_be_paused"), TIMER_CANNOT_BE_RESET(1005, "exception.bad_request.timer_cannot_be_reset"), diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java index 0e70df7c..18b8a0f4 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java @@ -16,6 +16,7 @@ import dev.abelab.smartpointer.exception.UnauthorizedException; import dev.abelab.smartpointer.infrastructure.api.type.Timer; import dev.abelab.smartpointer.usecase.timer.GetTimerUseCase; +import dev.abelab.smartpointer.usecase.timer.PauseTimerUseCase; import dev.abelab.smartpointer.usecase.timer.StartTimerUseCase; import lombok.RequiredArgsConstructor; import reactor.core.publisher.Flux; @@ -36,6 +37,8 @@ public class TimerController { private final StartTimerUseCase startTimerUseCase; + private final PauseTimerUseCase pauseTimerUseCase; + /** * タイマー取得API * @@ -70,6 +73,25 @@ public Timer startTimer( // return new Timer(timer); } + /** + * タイマー一時停止API + * + * @param loginUser ログインユーザ + * @return タイマー + */ + @MutationMapping + public Timer pauseTimer( // + @AuthenticationPrincipal final LoginUserDetails loginUser // + ) { + if (Objects.isNull(loginUser)) { + throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); + } + + final var timer = this.pauseTimerUseCase.handle(loginUser.getRoomId()); + this.timerSink.tryEmitNext(timer); + return new Timer(timer); + } + /** * タイマー購読API * diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java index d4e19cf5..38de512f 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java @@ -24,7 +24,7 @@ public class TimerStompController { private final ResumeTimerUseCase resumeTimerUseCase; - private final StopTimerUseCase stopTimerUseCase; + private final PauseTimerUseCase pauseTimerUseCase; private final ResetTimerUseCase resetTimerUseCase; @@ -67,7 +67,7 @@ public void resumeTimer( // public void stopTimer( // @DestinationVariable final String roomId // ) { - this.stopTimerUseCase.handle(roomId); + this.pauseTimerUseCase.handle(roomId); this.broadcastTimerUseCase.handle(roomId); } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/PauseTimerUseCase.java similarity index 81% rename from app/src/main/java/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase.java rename to app/src/main/java/dev/abelab/smartpointer/usecase/timer/PauseTimerUseCase.java index 2084a724..5bd091e0 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/PauseTimerUseCase.java @@ -3,6 +3,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import dev.abelab.smartpointer.domain.model.TimerModel; import dev.abelab.smartpointer.domain.repository.RoomRepository; import dev.abelab.smartpointer.domain.repository.TimerRepository; import dev.abelab.smartpointer.exception.ErrorCode; @@ -10,11 +11,11 @@ import lombok.RequiredArgsConstructor; /** - * タイマー停止ユースケース + * タイマー一時停止ユースケース */ @RequiredArgsConstructor @Component -public class StopTimerUseCase { +public class PauseTimerUseCase { private final RoomRepository roomRepository; @@ -24,9 +25,10 @@ public class StopTimerUseCase { * Handle UseCase * * @param roomId ルームID + * @return タイマー */ @Transactional - public void handle(final String roomId) { + public TimerModel handle(final String roomId) { // ルームの存在チェック if (!this.roomRepository.existsById(roomId)) { throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); @@ -37,8 +39,10 @@ public void handle(final String roomId) { .orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_TIMER)); // タイマーを更新 - timer.stop(); + timer.pause(); this.timerRepository.upsert(timer); + + return timer; } } diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 6dab5ea6..5566a2ff 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -83,14 +83,9 @@ type Mutation { resumeTimer: Timer! """ - タイマー停止API + タイマー一時停止API """ - stopTimer( - """ - 一時停止時点での残り時間 [s] - """ - remainingTimeAtPaused: Int! - ): Timer! + pauseTimer: Timer! """ タイマーリセットAPI diff --git a/app/src/main/resources/i18n/messages.yml b/app/src/main/resources/i18n/messages.yml index a0092ff9..ff1083b9 100644 --- a/app/src/main/resources/i18n/messages.yml +++ b/app/src/main/resources/i18n/messages.yml @@ -4,7 +4,7 @@ exception: invalid_request_parameter: 不正なリクエストです。 invalid_user_name: ユーザ名は1~255文字にしてください。 timer_cannot_be_started: タイマーを開始できません。 - timer_is_already_stopped: タイマーは既に停止済みです。 + timer_cannot_be_paused: タイマーを一時停止できません。 timer_cannot_be_reset: 実行中のタイマーはリセットできません。 invalid_timer_input_time: 1〜3600秒にしてください。 unauthorized: diff --git a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy index d93e6e1d..e640672f 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy @@ -5,6 +5,7 @@ import dev.abelab.smartpointer.enums.TimerStatus import dev.abelab.smartpointer.exception.BadRequestException import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.helper.DateHelper import dev.abelab.smartpointer.helper.RandomHelper import java.time.LocalDateTime @@ -79,31 +80,34 @@ class TimerModel_UT extends AbstractSpecification { verifyException(exception, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_STARTED)) } - def "stop: 実行中のタイマーを停止する"() { + def "pause: 実行中のタイマーを停止する"() { given: final timer = TimerModel.builder() .status(TimerStatus.RUNNING) + .remainingTimeAtPaused(Optional.empty()) + .finishAt(DateHelper.tomorrow()) .build() when: - timer.stop() + timer.pause() then: timer.status == TimerStatus.READY + timer.remainingTimeAtPaused.isPresent() } - def "stop: 準備中のタイマーは停止不可"() { + def "pause: 準備中のタイマーは停止不可"() { given: final timer = TimerModel.builder() .status(TimerStatus.READY) .build() when: - timer.stop() + timer.pause() then: final BaseException exception = thrown() - verifyException(exception, new BadRequestException(ErrorCode.TIMER_IS_ALREADY_STOPPED)) + verifyException(exception, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_PAUSED)) } def "reset: 準備中のタイマーをリセットする"() { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/PauseTimerUseCase_UT.groovy similarity index 91% rename from app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase_UT.groovy rename to app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/PauseTimerUseCase_UT.groovy index afcedb4d..94d40fd2 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StopTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/PauseTimerUseCase_UT.groovy @@ -10,12 +10,12 @@ import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired /** - * StopTimerUseCaseUseCaseの単体テスト + * PauseTimerUseCaseUseCaseの単体テスト */ -class StopTimerUseCase_UT extends AbstractUseCase_UT { +class PauseTimerUseCase_UT extends AbstractUseCase_UT { @Autowired - StopTimerUseCase sut + PauseTimerUseCase sut def "handle: タイマーを停止する"() { given: @@ -29,7 +29,7 @@ class StopTimerUseCase_UT extends AbstractUseCase_UT { noExceptionThrown() 1 * this.roomRepository.existsById(room.id) >> true 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.of(timer) - 1 * timer.stop() >> {} + 1 * timer.pause() >> {} this.timerRepository.upsert(timer) } From 710107ba9db93a5216e91ff27a5310ab1e69d703 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 05:21:55 +0900 Subject: [PATCH 091/189] =?UTF-8?q?[test]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E4=B8=80=E6=99=82=E5=81=9C=E6=AD=A2API=E3=81=AE?= =?UTF-8?q?=E7=B5=B1=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/TimerController_IT.groovy | 114 +++++++++++++++++- 1 file changed, 113 insertions(+), 1 deletion(-) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy index 86f641d2..88cefd7b 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -142,7 +142,7 @@ class TimerController_IT extends AbstractController_IT { StepVerifier.create(this.timerFlux) .expectNextMatches({ - it.inputTime == inputTime && it.remainingTimeAtPaused == Optional.empty() && it.status == TimerStatus.RUNNING + it.inputTime == inputTime && it.remainingTimeAtPaused.isEmpty() && it.status == TimerStatus.RUNNING }) .thenCancel() .verify() @@ -253,6 +253,118 @@ class TimerController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } + def "タイマー一時停止API: 正常系 タイマーを一時停止できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.RUNNING.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + when: + final query = + """ + mutation { + pauseTimer { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + final response = this.executeWebSocket(query, "pauseTimer", Timer) + + then: + final updatedTimer = sql.firstRow("SELECT * FROM timer") + updatedTimer.input_time == 60 + updatedTimer.remaining_time_at_paused != null + + response.inputTime == 60 + response.remainingTimeAtPaused != null + + StepVerifier.create(this.timerFlux) + .expectNextMatches({ + it.inputTime == 60 && it.remainingTimeAtPaused.isPresent() && it.status == TimerStatus.READY + }) + .thenCancel() + .verify() + } + + def "タイマー一時停止API: 異常系 タイマーが実行中以外の場合は400エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | timerStatus.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + expect: + final query = + """ + mutation { + pauseTimer { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.executeWebSocket(query, new BadRequestException(expectedErrorCode)) + + where: + timerStatus || expectedErrorCode + TimerStatus.READY || ErrorCode.TIMER_CANNOT_BE_PAUSED + TimerStatus.PAUSED || ErrorCode.TIMER_CANNOT_BE_PAUSED + } + + def "タイマー一時停止API: 異常系 未認証の場合は401エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.RUNNING.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + this.connectWebSocketGraphQL() + + expect: + final query = + """ + mutation { + pauseTimer { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + } + def "タイマー購読API: 正常系 タイマー変更イベントを購読できる"() { given: // @formatter:off From b09050cf5913b7a7aa586f928bacebf313fe6fc9 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 05:31:47 +0900 Subject: [PATCH 092/189] =?UTF-8?q?[refactor]=20REST=20+=20STOMP=20API?= =?UTF-8?q?=E3=82=92=E5=BB=83=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/config/WebSocketConfig.java | 29 ------- .../api/GlobalRestControllerAdvice.java | 4 +- .../api/GlobalStompControllerAdvice.java | 71 --------------- .../api/GraphQLExceptionResolver.java | 6 +- .../controller/PointerStompController.java | 60 ------------- .../api/controller/RoomController.java | 25 +----- .../api/controller/RoomRestController.java | 49 ----------- .../api/controller/SlideStompController.java | 55 ------------ .../api/controller/TimerStompController.java | 87 ------------------- .../api/controller/UserController.java | 35 +++----- .../api/request/RoomJoinRequest.java | 41 --------- .../api/request/TimerStartRequest.java | 34 -------- .../api/response/TimerResponse.java | 41 --------- .../AccessToken.java} | 6 +- .../ErrorResponse.java => type/Error.java} | 6 +- .../RoomResponse.java => type/Room.java} | 8 +- .../UserResponse.java => type/User.java} | 8 +- .../UsersResponse.java => type/Users.java} | 10 +-- .../usecase/timer/BroadcastTimerUseCase.java | 48 ---------- .../usecase/user/JoinRoomUseCase.java | 6 +- .../api/controller/RoomController_IT.groovy | 4 +- .../api/controller/UserController_IT.groovy | 8 +- .../timer/BroadcastTimerUseCase_UT.groovy | 46 ---------- 23 files changed, 50 insertions(+), 637 deletions(-) delete mode 100644 app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalStompControllerAdvice.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerStompController.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideStompController.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java rename app/src/main/java/dev/abelab/smartpointer/infrastructure/api/{response/AccessTokenResponse.java => type/AccessToken.java} (72%) rename app/src/main/java/dev/abelab/smartpointer/infrastructure/api/{response/ErrorResponse.java => type/Error.java} (72%) rename app/src/main/java/dev/abelab/smartpointer/infrastructure/api/{response/RoomResponse.java => type/Room.java} (71%) rename app/src/main/java/dev/abelab/smartpointer/infrastructure/api/{response/UserResponse.java => type/User.java} (71%) rename app/src/main/java/dev/abelab/smartpointer/infrastructure/api/{response/UsersResponse.java => type/Users.java} (55%) delete mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase.java delete mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase_UT.groovy diff --git a/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java deleted file mode 100644 index 30069e79..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/config/WebSocketConfig.java +++ /dev/null @@ -1,29 +0,0 @@ -package dev.abelab.smartpointer.config; - -import org.springframework.context.annotation.Configuration; -import org.springframework.messaging.simp.config.MessageBrokerRegistry; -import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; -import org.springframework.web.socket.config.annotation.StompEndpointRegistry; -import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; - -/** - * WebSocketの設定 - */ -@Configuration -@EnableWebSocketMessageBroker -public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { - - @Override - public void configureMessageBroker(final MessageBrokerRegistry config) { - config.enableSimpleBroker("/topic"); - config.setApplicationDestinationPrefixes("/app"); - } - - @Override - public void registerStompEndpoints(final StompEndpointRegistry registry) { - registry.addEndpoint("/ws") // - // ハッカソンなので、全てのオリジンを許可してもOKとする - .setAllowedOriginPatterns("*"); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalRestControllerAdvice.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalRestControllerAdvice.java index a516881e..aa2b0ec4 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalRestControllerAdvice.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalRestControllerAdvice.java @@ -22,7 +22,7 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; import dev.abelab.smartpointer.exception.*; -import dev.abelab.smartpointer.infrastructure.api.response.ErrorResponse; +import dev.abelab.smartpointer.infrastructure.api.type.Error; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -157,7 +157,7 @@ protected ResponseEntity handleHttpMessageNotReadable(@Nullable final Ht */ private ResponseEntity buildResponseEntity(final BaseException exception) { final var message = this.messageSource.getMessage(exception.getErrorCode().getMessageKey(), null, Locale.ENGLISH); - final var body = ErrorResponse.builder() // + final var body = Error.builder() // .code(exception.getErrorCode().getCode()) // .message(message) // .build(); diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalStompControllerAdvice.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalStompControllerAdvice.java deleted file mode 100644 index 0b40854e..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GlobalStompControllerAdvice.java +++ /dev/null @@ -1,71 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api; - -import java.util.Locale; - -import org.springframework.context.MessageSource; -import org.springframework.messaging.handler.annotation.MessageExceptionHandler; -import org.springframework.messaging.simp.SimpMessagingTemplate; -import org.springframework.web.bind.annotation.ControllerAdvice; - -import dev.abelab.smartpointer.exception.BaseException; -import dev.abelab.smartpointer.exception.ErrorCode; -import dev.abelab.smartpointer.exception.InternalServerErrorException; -import dev.abelab.smartpointer.infrastructure.api.response.ErrorResponse; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -/** - * Global rest controller advice - */ -@Slf4j -@ControllerAdvice -@RequiredArgsConstructor -public class GlobalStompControllerAdvice { - - private final SimpMessagingTemplate simpMessagingTemplate; - - private final MessageSource messageSource; - - /** - * Handle exception - * - * @param exception exception - */ - @MessageExceptionHandler - public void handleException(final Exception exception) { - log.error(exception.getMessage(), exception); - this.broadcastException(new InternalServerErrorException(ErrorCode.UNEXPECTED_ERROR)); - } - - /** - * Handle base exception - * - * @param exception exception - */ - @MessageExceptionHandler - public void handleException(final BaseException exception) { - this.broadcastException(exception); - } - - /** - * 例外を配信 - * - * @param exception exception - */ - private void broadcastException(final BaseException exception) { - final var message = this.messageSource.getMessage(exception.getErrorCode().getMessageKey(), null, Locale.ENGLISH); - final var body = ErrorResponse.builder() // - .code(exception.getErrorCode().getCode()) // - .message(message) // - .build(); - - if (exception.getHttpStatus().is4xxClientError()) { - log.warn(String.format("%d: %s", exception.getErrorCode().getCode(), message)); - } else if (exception.getHttpStatus().is5xxServerError()) { - log.error(String.format("%d: %s", exception.getErrorCode().getCode(), message)); - } - - this.simpMessagingTemplate.convertAndSend("/topic/exception", body); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GraphQLExceptionResolver.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GraphQLExceptionResolver.java index bb61e618..016d442e 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GraphQLExceptionResolver.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/GraphQLExceptionResolver.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Component; import dev.abelab.smartpointer.exception.BaseException; -import dev.abelab.smartpointer.infrastructure.api.response.ErrorResponse; +import dev.abelab.smartpointer.infrastructure.api.type.Error; import graphql.GraphQLError; import graphql.GraphqlErrorBuilder; import graphql.schema.DataFetchingEnvironment; @@ -46,9 +46,9 @@ protected GraphQLError resolveToSingleError(final Throwable ex, final DataFetchi * @param exception 例外 * @return エラーレスポンス */ - private ErrorResponse buildResponseEntity(final BaseException exception) { + private Error buildResponseEntity(final BaseException exception) { final var message = this.messageSource.getMessage(exception.getErrorCode().getMessageKey(), null, Locale.ENGLISH); - final var response = ErrorResponse.builder() // + final var response = Error.builder() // .code(exception.getErrorCode().getCode()) // .message(message) // .build(); diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerStompController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerStompController.java deleted file mode 100644 index ca7dcf04..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerStompController.java +++ /dev/null @@ -1,60 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.controller; - -import org.springframework.messaging.handler.annotation.DestinationVariable; -import org.springframework.messaging.handler.annotation.MessageMapping; -import org.springframework.messaging.handler.annotation.Payload; -import org.springframework.messaging.simp.SimpMessagingTemplate; -import org.springframework.stereotype.Controller; - -import dev.abelab.smartpointer.infrastructure.api.request.PointerControlRequest; -import dev.abelab.smartpointer.infrastructure.api.validation.RequestValidated; -import dev.abelab.smartpointer.usecase.pointer.ControlPointerUseCase; -import dev.abelab.smartpointer.usecase.pointer.DisconnectPointerUseCase; -import lombok.RequiredArgsConstructor; - -/** - * ポインターコントローラ - */ -@Controller -@RequiredArgsConstructor -public class PointerStompController { - - private final SimpMessagingTemplate simpMessagingTemplate; - - private final ControlPointerUseCase controlPointerUseCase; - - private final DisconnectPointerUseCase disconnectPointerUseCase; - - /** - * ポインター操作トピック - * - * @param roomId ルームID - * @param requestBody ポインター操作リクエスト - */ - @MessageMapping("/rooms/{roomId}/pointer/control") - public void controlPointer( // - @DestinationVariable final String roomId, // - @RequestValidated @Payload final PointerControlRequest requestBody // - ) { - this.simpMessagingTemplate.convertAndSend( // - String.format("/topic/rooms/%s/pointer/control", roomId), // - this.controlPointerUseCase.handle(roomId, requestBody) // - ); - } - - /** - * ポインター切断トピック - * - * @param roomId ルームID - */ - @MessageMapping("/rooms/{roomId}/pointer/disconnect") - public void disconnectPointer( // - @DestinationVariable final String roomId // - ) { - this.simpMessagingTemplate.convertAndSend( // - String.format("/topic/rooms/%s/pointer/control", roomId), // - this.disconnectPointerUseCase.handle(roomId) // - ); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java index d64d8f80..292eec11 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java @@ -4,11 +4,9 @@ import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.stereotype.Controller; -import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse; -import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse; +import dev.abelab.smartpointer.infrastructure.api.type.Room; import dev.abelab.smartpointer.usecase.room.CreateRoomUseCase; import dev.abelab.smartpointer.usecase.room.DeleteRoomUseCase; -import dev.abelab.smartpointer.usecase.user.JoinRoomUseCase; import lombok.RequiredArgsConstructor; /** @@ -22,16 +20,14 @@ public class RoomController { private final DeleteRoomUseCase deleteRoomUseCase; - private final JoinRoomUseCase joinRoomUseCase; - /** * ルーム作成API * * @return ルーム */ @MutationMapping - public RoomResponse createRoom() { - return new RoomResponse(this.createRoomUseCase.handle()); + public Room createRoom() { + return new Room(this.createRoomUseCase.handle()); } /** @@ -48,19 +44,4 @@ public String deleteRoom( // return roomId; } - /** - * ルーム入室API - * - * @param roomId ルームID - * @return ルームID - */ - @MutationMapping - public AccessTokenResponse joinRoom( // - @Argument final String roomId, // - @Argument final String passcode, // - @Argument final String userName // - ) { - return this.joinRoomUseCase.handle(roomId, passcode, userName); - } - } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java deleted file mode 100644 index bd48e008..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomRestController.java +++ /dev/null @@ -1,49 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.controller; - -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse; -import dev.abelab.smartpointer.usecase.room.CreateRoomUseCase; -import dev.abelab.smartpointer.usecase.room.DeleteRoomUseCase; -import lombok.RequiredArgsConstructor; - -/** - * ルームコントローラ - */ -@RestController -@RequestMapping(path = "/api/rooms", produces = MediaType.APPLICATION_JSON_VALUE) -@Validated -@RequiredArgsConstructor -public class RoomRestController { - - private final CreateRoomUseCase createRoomUseCase; - - private final DeleteRoomUseCase deleteRoomUseCase; - - /** - * ルーム作成API - * - * @return ルーム - */ - @PostMapping - @ResponseStatus(HttpStatus.CREATED) - public RoomResponse createRoom() { - return new RoomResponse(this.createRoomUseCase.handle()); - } - - /** - * ルーム削除API - * - * @param roomId ルームID - */ - @DeleteMapping("/{room_id}") - @ResponseStatus(HttpStatus.OK) - public void deleteRoom(@PathVariable("room_id") final String roomId // - ) { - this.deleteRoomUseCase.handle(roomId); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideStompController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideStompController.java deleted file mode 100644 index 50f83196..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideStompController.java +++ /dev/null @@ -1,55 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.controller; - -import org.springframework.messaging.handler.annotation.DestinationVariable; -import org.springframework.messaging.handler.annotation.MessageMapping; -import org.springframework.messaging.simp.SimpMessagingTemplate; -import org.springframework.stereotype.Controller; - -import dev.abelab.smartpointer.usecase.slide.GoNextSlideUseCase; -import dev.abelab.smartpointer.usecase.slide.GoPreviousSlideUseCase; -import lombok.RequiredArgsConstructor; - -/** - * スライドコントローラ - */ -@Controller -@RequiredArgsConstructor -public class SlideStompController { - - private final SimpMessagingTemplate simpMessagingTemplate; - - private final GoNextSlideUseCase goNextSlideUseCase; - - private final GoPreviousSlideUseCase goPreviousSlideUseCase; - - /** - * スライドを進めるトピック - * - * @param roomId ルームID - */ - @MessageMapping("/rooms/{roomId}/slides/next") - public void goNextSlide( // - @DestinationVariable final String roomId // - ) { - this.simpMessagingTemplate.convertAndSend( // - String.format("/topic/rooms/%s/slides/control", roomId), // - this.goNextSlideUseCase.handle(roomId) // - ); - } - - /** - * スライドを戻すトピック - * - * @param roomId ルームID - */ - @MessageMapping("/rooms/{roomId}/slides/previous") - public void goPreviousSlide( // - @DestinationVariable final String roomId // - ) { - this.simpMessagingTemplate.convertAndSend( // - String.format("/topic/rooms/%s/slides/control", roomId), // - this.goPreviousSlideUseCase.handle(roomId) // - ); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java deleted file mode 100644 index 38de512f..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerStompController.java +++ /dev/null @@ -1,87 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.controller; - -import org.springframework.messaging.handler.annotation.DestinationVariable; -import org.springframework.messaging.handler.annotation.MessageMapping; -import org.springframework.messaging.handler.annotation.Payload; -import org.springframework.stereotype.Controller; - -import dev.abelab.smartpointer.infrastructure.api.request.TimerResumeRequest; -import dev.abelab.smartpointer.infrastructure.api.request.TimerStartRequest; -import dev.abelab.smartpointer.infrastructure.api.validation.RequestValidated; -import dev.abelab.smartpointer.usecase.timer.*; -import lombok.RequiredArgsConstructor; - -/** - * タイマーコントローラ - */ -@Controller -@RequiredArgsConstructor -public class TimerStompController { - - private final BroadcastTimerUseCase broadcastTimerUseCase; - - private final StartTimerUseCase startTimerUseCase; - - private final ResumeTimerUseCase resumeTimerUseCase; - - private final PauseTimerUseCase pauseTimerUseCase; - - private final ResetTimerUseCase resetTimerUseCase; - - /** - * タイマー開始トピック - * - * @param roomId ルームID - * @param requestBody タイマー開始リクエスト - */ - @MessageMapping("/rooms/{room_id}/timer/start") - public void startTimer( // - @DestinationVariable("room_id") final String roomId, // - @RequestValidated @Payload final TimerStartRequest requestBody // - ) { - this.startTimerUseCase.handle(roomId, requestBody.getValue()); - this.broadcastTimerUseCase.handle(roomId); - } - - /** - * タイマー再開トピック - * - * @param roomId ルームID - * @param requestBody タイマー再開リクエスト - */ - @MessageMapping("/rooms/{room_id}/timer/resume") - public void resumeTimer( // - @DestinationVariable final String roomId, // - @RequestValidated @Payload final TimerResumeRequest requestBody // - ) { - this.resumeTimerUseCase.handle(roomId, requestBody); - this.broadcastTimerUseCase.handle(roomId); - } - - /** - * タイマー停止トピック - * - * @param roomId ルームID - */ - @MessageMapping("/rooms/{room_id}/timer/stop") - public void stopTimer( // - @DestinationVariable final String roomId // - ) { - this.pauseTimerUseCase.handle(roomId); - this.broadcastTimerUseCase.handle(roomId); - } - - /** - * タイマーリセットトピック - * - * @param roomId ルームID - */ - @MessageMapping("/rooms/{room_id}/timer/reset") - public void resetTimer( // - @DestinationVariable final String roomId // - ) { - this.resetTimerUseCase.handle(roomId); - this.broadcastTimerUseCase.handle(roomId); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java index 20934971..3c738a71 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java @@ -3,19 +3,13 @@ import java.util.stream.Collectors; import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.graphql.data.method.annotation.QueryMapping; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.ResponseStatus; -import dev.abelab.smartpointer.infrastructure.api.request.RoomJoinRequest; -import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse; -import dev.abelab.smartpointer.infrastructure.api.response.UserResponse; -import dev.abelab.smartpointer.infrastructure.api.response.UsersResponse; -import dev.abelab.smartpointer.infrastructure.api.validation.RequestValidated; +import dev.abelab.smartpointer.infrastructure.api.type.AccessToken; +import dev.abelab.smartpointer.infrastructure.api.type.User; +import dev.abelab.smartpointer.infrastructure.api.type.Users; import dev.abelab.smartpointer.usecase.user.GetUsersUseCase; import dev.abelab.smartpointer.usecase.user.JoinRoomUseCase; import lombok.RequiredArgsConstructor; @@ -38,29 +32,28 @@ public class UserController { * @return ユーザリスト */ @QueryMapping - public UsersResponse getUsers( // + public Users getUsers( // @Argument final String roomId // ) { final var users = this.getUsersUseCase.handle(roomId).stream() // - .map(UserResponse::new) // + .map(User::new) // .collect(Collectors.toList()); - return new UsersResponse(users); + return new Users(users); } /** * ルーム入室API * * @param roomId ルームID - * @param requestBody ルーム入室リクエスト - * @return アクセストークン + * @return ルームID */ - @PostMapping("/{room_id}/join") - @ResponseStatus(HttpStatus.OK) - public AccessTokenResponse joinRoom( // - @PathVariable("room_id") final String roomId, // - @RequestValidated @RequestBody final RoomJoinRequest requestBody // + @MutationMapping + public AccessToken joinRoom( // + @Argument final String roomId, // + @Argument final String passcode, // + @Argument final String userName // ) { - return this.joinRoomUseCase.handle(roomId, requestBody.getPasscode(), requestBody.getName()); + return this.joinRoomUseCase.handle(roomId, passcode, userName); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java deleted file mode 100644 index 58231f67..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/RoomJoinRequest.java +++ /dev/null @@ -1,41 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.request; - -import dev.abelab.smartpointer.exception.BadRequestException; -import dev.abelab.smartpointer.exception.ErrorCode; -import dev.abelab.smartpointer.util.ValidationUtil; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * ルーム入室リクエスト - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class RoomJoinRequest implements BaseRequest { - - /** - * パスコード - */ - String passcode; - - /** - * ユーザ名 - */ - String name; - - /** - * バリデーション - */ - @Override - public void validate() { - // ユーザ名 - if (!ValidationUtil.checkStringLength(this.getName(), 1, 255)) { - throw new BadRequestException(ErrorCode.INVALID_USER_NAME); - } - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java deleted file mode 100644 index d2f565cc..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerStartRequest.java +++ /dev/null @@ -1,34 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.request; - -import dev.abelab.smartpointer.util.JsonMessageUtil; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * タイマー開始リクエスト - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class TimerStartRequest implements BaseRequest { - - /** - * 設定時間[s] - */ - Integer value; - - public TimerStartRequest(final String payload) { - final var object = JsonMessageUtil.convertJsonToObject(payload, TimerStartRequest.class); - this.value = object.getValue(); - } - - /** - * バリデーション - */ - @Override - public void validate() {} - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java deleted file mode 100644 index 196bbab8..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/TimerResponse.java +++ /dev/null @@ -1,41 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.response; - -import java.time.LocalDateTime; - -import dev.abelab.smartpointer.domain.model.TimerModel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * タイマーレスポンス - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class TimerResponse { - - /** - * ステータス - */ - Integer status; - - /** - * 初期値[s] - */ - Integer value; - - /** - * 終了時刻 - */ - LocalDateTime finishAt; - - public TimerResponse(final TimerModel timerModel) { - this.status = timerModel.getStatus().getId(); - this.value = timerModel.getInputTime(); - this.finishAt = timerModel.getFinishAt(); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/AccessTokenResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/AccessToken.java similarity index 72% rename from app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/AccessTokenResponse.java rename to app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/AccessToken.java index 3d5372f9..74f2473f 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/AccessTokenResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/AccessToken.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.infrastructure.api.response; +package dev.abelab.smartpointer.infrastructure.api.type; import lombok.AllArgsConstructor; import lombok.Builder; @@ -6,13 +6,13 @@ import lombok.NoArgsConstructor; /** - * アクセストークンレスポンス + * アクセストークン */ @Data @Builder @AllArgsConstructor @NoArgsConstructor -public class AccessTokenResponse { +public class AccessToken { /** * トークンタイプ diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/ErrorResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Error.java similarity index 72% rename from app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/ErrorResponse.java rename to app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Error.java index 36611e8d..3bdb6553 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/ErrorResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Error.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.infrastructure.api.response; +package dev.abelab.smartpointer.infrastructure.api.type; import lombok.AllArgsConstructor; import lombok.Builder; @@ -6,13 +6,13 @@ import lombok.NoArgsConstructor; /** - * エラーレスポンス + * エラー */ @Data @Builder @AllArgsConstructor @NoArgsConstructor -public class ErrorResponse { +public class Error { /** * エラーメッセージ diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Room.java similarity index 71% rename from app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java rename to app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Room.java index 58a39602..5f8b4f4c 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/RoomResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Room.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.infrastructure.api.response; +package dev.abelab.smartpointer.infrastructure.api.type; import dev.abelab.smartpointer.domain.model.RoomModel; import lombok.AllArgsConstructor; @@ -7,13 +7,13 @@ import lombok.NoArgsConstructor; /** - * ルームレスポンス + * ルーム */ @Data @Builder @AllArgsConstructor @NoArgsConstructor -public class RoomResponse { +public class Room { /** * ルームID @@ -25,7 +25,7 @@ public class RoomResponse { */ String passcode; - public RoomResponse(final RoomModel roomModel) { + public Room(final RoomModel roomModel) { this.id = roomModel.getId(); this.passcode = roomModel.getPasscode(); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UserResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/User.java similarity index 71% rename from app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UserResponse.java rename to app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/User.java index 686b7821..76d0a3a4 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UserResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/User.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.infrastructure.api.response; +package dev.abelab.smartpointer.infrastructure.api.type; import dev.abelab.smartpointer.domain.model.UserModel; import lombok.AllArgsConstructor; @@ -7,13 +7,13 @@ import lombok.NoArgsConstructor; /** - * ユーザレスポンス + * ユーザ */ @Data @Builder @AllArgsConstructor @NoArgsConstructor -public class UserResponse { +public class User { /** * ユーザID @@ -25,7 +25,7 @@ public class UserResponse { */ String name; - public UserResponse(final UserModel userModel) { + public User(final UserModel userModel) { this.id = userModel.getId(); this.name = userModel.getName(); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UsersResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java similarity index 55% rename from app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UsersResponse.java rename to app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java index 56bf101d..1fcb8f8e 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/UsersResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java @@ -1,4 +1,4 @@ -package dev.abelab.smartpointer.infrastructure.api.response; +package dev.abelab.smartpointer.infrastructure.api.type; import java.util.List; @@ -8,17 +8,17 @@ import lombok.NoArgsConstructor; /** - * ユーザリストレスポンス + * ユーザリスト */ @Data @Builder @AllArgsConstructor @NoArgsConstructor -public class UsersResponse { +public class Users { /** - * ユーザID + * ユーザリスト */ - List users; + List users; } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase.java deleted file mode 100644 index 353911a0..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase.java +++ /dev/null @@ -1,48 +0,0 @@ -package dev.abelab.smartpointer.usecase.timer; - -import org.springframework.messaging.simp.SimpMessagingTemplate; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import dev.abelab.smartpointer.domain.model.TimerModel; -import dev.abelab.smartpointer.domain.repository.RoomRepository; -import dev.abelab.smartpointer.domain.repository.TimerRepository; -import dev.abelab.smartpointer.exception.ErrorCode; -import dev.abelab.smartpointer.exception.NotFoundException; -import dev.abelab.smartpointer.infrastructure.api.response.TimerResponse; -import lombok.RequiredArgsConstructor; - -/** - * タイマー取得ユースケース - */ -@RequiredArgsConstructor -@Component -public class BroadcastTimerUseCase { - - private final RoomRepository roomRepository; - - private final TimerRepository timerRepository; - - private final SimpMessagingTemplate simpMessagingTemplate; - - /** - * Handle UseCase - * - * @param roomId ルームID - */ - @Transactional - public void handle(final String roomId) { - // ルームの存在チェック - if (!this.roomRepository.existsById(roomId)) { - throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); - } - - // タイマーを取得 - final var timer = this.timerRepository.selectByRoomId(roomId) // - .orElse(TimerModel.builder().roomId(roomId).build()); - - // タイマーを配信 - this.simpMessagingTemplate.convertAndSend(String.format("/topic/rooms/%s/timer", roomId), new TimerResponse(timer)); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java index a4907858..19982796 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java @@ -12,7 +12,7 @@ import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.NotFoundException; import dev.abelab.smartpointer.exception.UnauthorizedException; -import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse; +import dev.abelab.smartpointer.infrastructure.api.type.AccessToken; import dev.abelab.smartpointer.property.AuthProperty; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; @@ -42,7 +42,7 @@ public class JoinRoomUseCase { * @return アクセストークン */ @Transactional - public AccessTokenResponse handle(final String roomId, final String passcode, final String userName) { + public AccessToken handle(final String roomId, final String passcode, final String userName) { // ルームの取得 final var room = this.roomRepository.selectById(roomId) // .orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_ROOM)); @@ -71,7 +71,7 @@ public AccessTokenResponse handle(final String roomId, final String passcode, fi .setExpiration(new Date(System.currentTimeMillis() + this.authProperty.getTtl() * 1000)) // .signWith(SignatureAlgorithm.HS512, this.authProperty.getJwt().getSecret().getBytes()) // .compact(); - return new AccessTokenResponse(this.authProperty.getTokenType(), accessToken, this.authProperty.getTtl()); + return new AccessToken(this.authProperty.getTokenType(), accessToken, this.authProperty.getTtl()); } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy index cc16d1c6..bf9acd09 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy @@ -4,7 +4,7 @@ import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper -import dev.abelab.smartpointer.infrastructure.api.response.RoomResponse +import dev.abelab.smartpointer.infrastructure.api.type.Room /** * RoomControllerの統合テスト @@ -22,7 +22,7 @@ class RoomController_IT extends AbstractController_IT { } } """ - final response = this.executeHttp(query, "createRoom", RoomResponse) + final response = this.executeHttp(query, "createRoom", Room) then: final createdRoom = sql.firstRow("SELECT * FROM room") diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy index a7348644..eddbeb76 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy @@ -6,8 +6,8 @@ import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.exception.UnauthorizedException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper -import dev.abelab.smartpointer.infrastructure.api.response.AccessTokenResponse -import dev.abelab.smartpointer.infrastructure.api.response.UsersResponse +import dev.abelab.smartpointer.infrastructure.api.type.AccessToken +import dev.abelab.smartpointer.infrastructure.api.type.Users /** * UserControllerの統合テスト @@ -43,7 +43,7 @@ class UserController_IT extends AbstractController_IT { } } """ - final response = this.executeHttp(query, "getUsers", UsersResponse) + final response = this.executeHttp(query, "getUsers", Users) then: response.users*.name == expectedUserNames @@ -94,7 +94,7 @@ class UserController_IT extends AbstractController_IT { } } """ - final response = this.executeHttp(query, "joinRoom", AccessTokenResponse) + final response = this.executeHttp(query, "joinRoom", AccessToken) then: response.tokenType == this.authProperty.tokenType diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase_UT.groovy deleted file mode 100644 index d49de67e..00000000 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/BroadcastTimerUseCase_UT.groovy +++ /dev/null @@ -1,46 +0,0 @@ -package dev.abelab.smartpointer.usecase.timer - -import dev.abelab.smartpointer.domain.model.RoomModel -import dev.abelab.smartpointer.domain.model.TimerModel -import dev.abelab.smartpointer.exception.BaseException -import dev.abelab.smartpointer.exception.ErrorCode -import dev.abelab.smartpointer.exception.NotFoundException -import dev.abelab.smartpointer.helper.RandomHelper -import dev.abelab.smartpointer.usecase.AbstractUseCase_UT -import org.springframework.beans.factory.annotation.Autowired - -/** - * BroadcastTimerUseCaseUseCaseの単体テスト - */ -class BroadcastTimerUseCase_UT extends AbstractUseCase_UT { - - @Autowired - BroadcastTimerUseCase sut - - def "handle: タイマーを配信する"() { - given: - final timer = RandomHelper.mock(TimerModel) - final room = RandomHelper.mock(RoomModel) - - when: - this.sut.handle(room.id) - - then: - 1 * this.roomRepository.existsById(room.id) >> true - 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.of(timer) - } - - def "handle: ルームが存在しない場合は404エラー"() { - given: - final room = RandomHelper.mock(RoomModel) - - when: - this.sut.handle(room.id) - - then: - 1 * this.roomRepository.existsById(room.id) >> false - final BaseException exception = thrown() - verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) - } - -} From d17c23b293b75dc33200d51be4e67a079edb100c Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 05:48:12 +0900 Subject: [PATCH 093/189] =?UTF-8?q?[feat]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E5=86=8D=E9=96=8BAPI=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/domain/model/TimerModel.java | 9 ++++---- .../smartpointer/exception/ErrorCode.java | 4 +++- .../api/controller/TimerController.java | 22 +++++++++++++++++++ .../usecase/timer/ResumeTimerUseCase.java | 10 +++++---- app/src/main/resources/i18n/messages.yml | 3 ++- .../domain/model/TimerModel_UT.groovy | 13 +++++++---- .../timer/ResumeTimerUseCase_UT.groovy | 15 ++++--------- 7 files changed, 50 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java index 6c0cbede..678dd67d 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java @@ -78,16 +78,15 @@ public void start(final Integer inputTime) { /** * タイマーを再開 - * - * @param value タイマー時間[s] */ - public void resume(final Integer value) { + public void resume() { if (!this.getStatus().equals(TimerStatus.READY)) { - throw new BadRequestException(ErrorCode.TIMER_CANNOT_BE_STARTED); + throw new BadRequestException(ErrorCode.TIMER_CANNOT_BE_RESUMED); } + this.setFinishAt(LocalDateTime.now().plusSeconds(this.remainingTimeAtPaused.orElse(0))); this.setStatus(TimerStatus.RUNNING); - this.setFinishAt(LocalDateTime.now().plusSeconds(value)); + this.setRemainingTimeAtPaused(Optional.empty()); } /** diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java index 490f94ba..d96a989a 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java @@ -25,7 +25,9 @@ public enum ErrorCode { TIMER_CANNOT_BE_RESET(1005, "exception.bad_request.timer_cannot_be_reset"), - INVALID_TIMER_INPUT_TIME(1006, "exception.bad_request.invalid_timer_input_time"), + TIMER_CANNOT_BE_RESUMED(1006, "exception.bad_request.timer_cannot_be_resumed"), + + INVALID_TIMER_INPUT_TIME(1007, "exception.bad_request.invalid_timer_input_time"), /** * 401 Unauthorized: 2000~2999 diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java index 18b8a0f4..0e1e254f 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java @@ -17,6 +17,7 @@ import dev.abelab.smartpointer.infrastructure.api.type.Timer; import dev.abelab.smartpointer.usecase.timer.GetTimerUseCase; import dev.abelab.smartpointer.usecase.timer.PauseTimerUseCase; +import dev.abelab.smartpointer.usecase.timer.ResumeTimerUseCase; import dev.abelab.smartpointer.usecase.timer.StartTimerUseCase; import lombok.RequiredArgsConstructor; import reactor.core.publisher.Flux; @@ -37,6 +38,8 @@ public class TimerController { private final StartTimerUseCase startTimerUseCase; + private final ResumeTimerUseCase resumeTimerUseCase; + private final PauseTimerUseCase pauseTimerUseCase; /** @@ -73,6 +76,25 @@ public Timer startTimer( // return new Timer(timer); } + /** + * タイマー再開API + * + * @param loginUser ログインユーザ + * @return タイマー + */ + @MutationMapping + public Timer resumeTimer( // + @AuthenticationPrincipal final LoginUserDetails loginUser // + ) { + if (Objects.isNull(loginUser)) { + throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); + } + + final var timer = this.resumeTimerUseCase.handle(loginUser.getRoomId()); + this.timerSink.tryEmitNext(timer); + return new Timer(timer); + } + /** * タイマー一時停止API * diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase.java index ef605ccf..1a142c47 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase.java @@ -3,11 +3,11 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import dev.abelab.smartpointer.domain.model.TimerModel; import dev.abelab.smartpointer.domain.repository.RoomRepository; import dev.abelab.smartpointer.domain.repository.TimerRepository; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.NotFoundException; -import dev.abelab.smartpointer.infrastructure.api.request.TimerResumeRequest; import lombok.RequiredArgsConstructor; /** @@ -25,10 +25,10 @@ public class ResumeTimerUseCase { * Handle UseCase * * @param roomId ルームID - * @param requestBody タイマー再開リクエスト + * @return タイマー */ @Transactional - public void handle(final String roomId, final TimerResumeRequest requestBody) { + public TimerModel handle(final String roomId) { // ルームの存在チェック if (!this.roomRepository.existsById(roomId)) { throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); @@ -39,8 +39,10 @@ public void handle(final String roomId, final TimerResumeRequest requestBody) { .orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_TIMER)); // タイマーを再開 - timer.resume(requestBody.getValue()); + timer.resume(); this.timerRepository.upsert(timer); + + return timer; } } diff --git a/app/src/main/resources/i18n/messages.yml b/app/src/main/resources/i18n/messages.yml index ff1083b9..6dbb4e73 100644 --- a/app/src/main/resources/i18n/messages.yml +++ b/app/src/main/resources/i18n/messages.yml @@ -5,7 +5,8 @@ exception: invalid_user_name: ユーザ名は1~255文字にしてください。 timer_cannot_be_started: タイマーを開始できません。 timer_cannot_be_paused: タイマーを一時停止できません。 - timer_cannot_be_reset: 実行中のタイマーはリセットできません。 + timer_cannot_be_reset: タイマーをリセットできません。 + timer_cannot_be_resumed: タイマーを再開できません。 invalid_timer_input_time: 1〜3600秒にしてください。 unauthorized: user_not_logged_in: ユーザはログインしていません。 diff --git a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy index e640672f..d4a7a054 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy @@ -9,6 +9,7 @@ import dev.abelab.smartpointer.helper.DateHelper import dev.abelab.smartpointer.helper.RandomHelper import java.time.LocalDateTime +import java.time.temporal.ChronoUnit /** * TimerModelの単体テスト @@ -54,30 +55,34 @@ class TimerModel_UT extends AbstractSpecification { def "resume: タイマーを再開する"() { given: + final now = LocalDateTime.now() final timer = TimerModel.builder() .inputTime(120) + .remainingTimeAtPaused(Optional.of(60)) .status(TimerStatus.READY) .build() when: - timer.resume(60) + timer.resume() then: - timer.inputTime == 120 + ChronoUnit.MINUTES.between(now, timer.finishAt) == 1 + timer.remainingTimeAtPaused.isEmpty() } def "resume: 実行中のタイマーは再開不可"() { given: final timer = TimerModel.builder() + .remainingTimeAtPaused(Optional.of(60)) .status(TimerStatus.RUNNING) .build() when: - timer.resume(60) + timer.resume() then: final BaseException exception = thrown() - verifyException(exception, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_STARTED)) + verifyException(exception, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_RESUMED)) } def "pause: 実行中のタイマーを停止する"() { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase_UT.groovy index c516a6f5..9dcfbcfc 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/ResumeTimerUseCase_UT.groovy @@ -6,7 +6,6 @@ import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper -import dev.abelab.smartpointer.infrastructure.api.request.TimerResumeRequest import dev.abelab.smartpointer.usecase.AbstractUseCase_UT import org.springframework.beans.factory.annotation.Autowired @@ -23,16 +22,14 @@ class ResumeTimerUseCase_UT extends AbstractUseCase_UT { final timer = Spy(TimerModel) final room = RandomHelper.mock(RoomModel) - final requestBody = RandomHelper.mock(TimerResumeRequest) - when: - this.sut.handle(room.id, requestBody) + this.sut.handle(room.id) then: noExceptionThrown() 1 * this.roomRepository.existsById(room.id) >> true 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.of(timer) - 1 * timer.resume(requestBody.value) >> {} + 1 * timer.resume() >> {} this.timerRepository.upsert(timer) } @@ -40,10 +37,8 @@ class ResumeTimerUseCase_UT extends AbstractUseCase_UT { given: final room = RandomHelper.mock(RoomModel) - final requestBody = RandomHelper.mock(TimerResumeRequest) - when: - this.sut.handle(room.id, requestBody) + this.sut.handle(room.id) then: 1 * this.roomRepository.existsById(room.id) >> false @@ -55,10 +50,8 @@ class ResumeTimerUseCase_UT extends AbstractUseCase_UT { given: final room = RandomHelper.mock(RoomModel) - final requestBody = RandomHelper.mock(TimerResumeRequest) - when: - this.sut.handle(room.id, requestBody) + this.sut.handle(room.id) then: 1 * this.roomRepository.existsById(room.id) >> true From 40f6c1b0f522d18dac00ab6819e9a5316a76f86b Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 05:57:48 +0900 Subject: [PATCH 094/189] =?UTF-8?q?[test]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E5=86=8D=E9=96=8BAPI=E3=81=AE=E7=B5=B1=E5=90=88?= =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/TimerController_IT.groovy | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy index 88cefd7b..8bda4140 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -253,6 +253,118 @@ class TimerController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } + def "タイマー再開API: 正常系 タイマーを再開できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + when: + final query = + """ + mutation { + resumeTimer { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + final response = this.executeWebSocket(query, "resumeTimer", Timer) + + then: + final updatedTimer = sql.firstRow("SELECT * FROM timer") + updatedTimer.input_time == 60 + updatedTimer.remaining_time_at_paused == null + + response.inputTime == 60 + response.remainingTimeAtPaused == null + + StepVerifier.create(this.timerFlux) + .expectNextMatches({ + it.inputTime == 60 && it.remainingTimeAtPaused.isEmpty() && it.status == TimerStatus.RUNNING + }) + .thenCancel() + .verify() + } + + def "タイマー再開API: 異常系 タイマーが準備中以外の場合は400エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | timerStatus.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + expect: + final query = + """ + mutation { + resumeTimer { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.executeWebSocket(query, new BadRequestException(expectedErrorCode)) + + where: + timerStatus || expectedErrorCode + TimerStatus.RUNNING || ErrorCode.TIMER_CANNOT_BE_RESUMED + TimerStatus.PAUSED || ErrorCode.TIMER_CANNOT_BE_RESUMED + } + + def "タイマー再開API: 異常系 未認証の場合は401エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + this.connectWebSocketGraphQL() + + expect: + final query = + """ + mutation { + resumeTimer { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + } + def "タイマー一時停止API: 正常系 タイマーを一時停止できる"() { given: // @formatter:off From e4f6b63f2043d39bccb7def82411e837023bc123 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 06:08:32 +0900 Subject: [PATCH 095/189] =?UTF-8?q?[feat]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E3=83=AA=E3=82=BB=E3=83=83=E3=83=88API=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/domain/model/TimerModel.java | 8 +-- .../api/controller/TimerController.java | 26 ++++++++-- .../usecase/timer/ResetTimerUseCase.java | 6 ++- .../domain/model/TimerModel_UT.groovy | 51 ++++++++++++++----- .../api/controller/TimerController_IT.groovy | 16 ++++-- 5 files changed, 81 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java index 678dd67d..f7420316 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java @@ -80,7 +80,7 @@ public void start(final Integer inputTime) { * タイマーを再開 */ public void resume() { - if (!this.getStatus().equals(TimerStatus.READY)) { + if (!this.getStatus().equals(TimerStatus.PAUSED)) { throw new BadRequestException(ErrorCode.TIMER_CANNOT_BE_RESUMED); } @@ -99,18 +99,20 @@ public void pause() { // レイテンシによっては残り時間が0sを下回る可能性があるが、とりあえず考慮しない this.setRemainingTimeAtPaused(Optional.of(Math.toIntExact(ChronoUnit.SECONDS.between(LocalDateTime.now(), this.finishAt)))); - this.setStatus(TimerStatus.READY); + this.setStatus(TimerStatus.PAUSED); } /** * タイマーをリセット */ public void reset() { - if (!this.getStatus().equals(TimerStatus.READY)) { + if (this.getStatus().equals(TimerStatus.READY)) { throw new BadRequestException(ErrorCode.TIMER_CANNOT_BE_RESET); } + this.setRemainingTimeAtPaused(Optional.empty()); this.setFinishAt(LocalDateTime.now().plusSeconds(this.getInputTime())); + this.setStatus(TimerStatus.READY); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java index 0e1e254f..2999b26a 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java @@ -15,10 +15,7 @@ import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.UnauthorizedException; import dev.abelab.smartpointer.infrastructure.api.type.Timer; -import dev.abelab.smartpointer.usecase.timer.GetTimerUseCase; -import dev.abelab.smartpointer.usecase.timer.PauseTimerUseCase; -import dev.abelab.smartpointer.usecase.timer.ResumeTimerUseCase; -import dev.abelab.smartpointer.usecase.timer.StartTimerUseCase; +import dev.abelab.smartpointer.usecase.timer.*; import lombok.RequiredArgsConstructor; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; @@ -42,6 +39,8 @@ public class TimerController { private final PauseTimerUseCase pauseTimerUseCase; + private final ResetTimerUseCase resetTimerUseCase; + /** * タイマー取得API * @@ -114,6 +113,25 @@ public Timer pauseTimer( // return new Timer(timer); } + /** + * タイマーリセットAPI + * + * @param loginUser ログインユーザ + * @return タイマー + */ + @MutationMapping + public Timer resetTimer( // + @AuthenticationPrincipal final LoginUserDetails loginUser // + ) { + if (Objects.isNull(loginUser)) { + throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); + } + + final var timer = this.resetTimerUseCase.handle(loginUser.getRoomId()); + this.timerSink.tryEmitNext(timer); + return new Timer(timer); + } + /** * タイマー購読API * diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase.java index ed566b50..4f1d6a71 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/timer/ResetTimerUseCase.java @@ -3,6 +3,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import dev.abelab.smartpointer.domain.model.TimerModel; import dev.abelab.smartpointer.domain.repository.RoomRepository; import dev.abelab.smartpointer.domain.repository.TimerRepository; import dev.abelab.smartpointer.exception.ErrorCode; @@ -24,9 +25,10 @@ public class ResetTimerUseCase { * Handle UseCase * * @param roomId ルームID + * @return タイマー */ @Transactional - public void handle(final String roomId) { + public TimerModel handle(final String roomId) { // ルームの存在チェック if (!this.roomRepository.existsById(roomId)) { throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); @@ -39,6 +41,8 @@ public void handle(final String roomId) { // タイマーを更新 timer.reset(); this.timerRepository.upsert(timer); + + return timer; } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy index d4a7a054..a68c2238 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy @@ -39,10 +39,10 @@ class TimerModel_UT extends AbstractSpecification { timer.remainingTimeAtPaused.isEmpty() } - def "start: 実行中のタイマーは開始不可"() { + def "start: 準備中以外のタイマーは開始不可"() { given: final timer = TimerModel.builder() - .status(TimerStatus.RUNNING) + .status(status) .build() when: @@ -51,15 +51,21 @@ class TimerModel_UT extends AbstractSpecification { then: final BaseException exception = thrown() verifyException(exception, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_STARTED)) + + where: + status << [ + TimerStatus.RUNNING, + TimerStatus.PAUSED, + ] } - def "resume: タイマーを再開する"() { + def "resume: 一時停止中のタイマーを再開する"() { given: final now = LocalDateTime.now() final timer = TimerModel.builder() .inputTime(120) .remainingTimeAtPaused(Optional.of(60)) - .status(TimerStatus.READY) + .status(TimerStatus.PAUSED) .build() when: @@ -70,7 +76,7 @@ class TimerModel_UT extends AbstractSpecification { timer.remainingTimeAtPaused.isEmpty() } - def "resume: 実行中のタイマーは再開不可"() { + def "resume: 一時停止中以外のタイマーは再開不可"() { given: final timer = TimerModel.builder() .remainingTimeAtPaused(Optional.of(60)) @@ -83,6 +89,12 @@ class TimerModel_UT extends AbstractSpecification { then: final BaseException exception = thrown() verifyException(exception, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_RESUMED)) + + where: + status << [ + TimerStatus.READY, + TimerStatus.RUNNING, + ] } def "pause: 実行中のタイマーを停止する"() { @@ -97,14 +109,14 @@ class TimerModel_UT extends AbstractSpecification { timer.pause() then: - timer.status == TimerStatus.READY + timer.status == TimerStatus.PAUSED timer.remainingTimeAtPaused.isPresent() } - def "pause: 準備中のタイマーは停止不可"() { + def "pause: 実行中以外のタイマーは停止不可"() { given: final timer = TimerModel.builder() - .status(TimerStatus.READY) + .status(status) .build() when: @@ -113,14 +125,21 @@ class TimerModel_UT extends AbstractSpecification { then: final BaseException exception = thrown() verifyException(exception, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_PAUSED)) + + where: + status << [ + TimerStatus.READY, + TimerStatus.PAUSED, + ] } - def "reset: 準備中のタイマーをリセットする"() { + def "reset: タイマーをリセットする"() { given: final oldFinishAt = RandomHelper.mock(LocalDateTime) final timer = TimerModel.builder() - .status(TimerStatus.READY) + .status(status) .inputTime(60) + .remainingTimeAtPaused(Optional.of(10)) .finishAt(oldFinishAt) .build() @@ -128,15 +147,21 @@ class TimerModel_UT extends AbstractSpecification { timer.reset() then: + timer.remainingTimeAtPaused.isEmpty() timer.status == TimerStatus.READY timer.finishAt != oldFinishAt - } + where: + status << [ + TimerStatus.RUNNING, + TimerStatus.PAUSED, + ] + } - def "reset: 実行中のタイマーはリセット不可"() { + def "reset: 準備中のタイマーはリセット不可"() { given: final timer = TimerModel.builder() - .status(TimerStatus.RUNNING) + .status(TimerStatus.READY) .build() when: diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy index 8bda4140..7e457939 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -136,9 +136,11 @@ class TimerController_IT extends AbstractController_IT { final updatedTimer = sql.firstRow("SELECT * FROM timer") updatedTimer.input_time == inputTime updatedTimer.remaining_time_at_paused == null + updatedTimer.status == TimerStatus.RUNNING.id response.inputTime == inputTime response.remainingTimeAtPaused == null + response.status == TimerStatus.RUNNING StepVerifier.create(this.timerFlux) .expectNextMatches({ @@ -261,8 +263,8 @@ class TimerController_IT extends AbstractController_IT { "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) } TableHelper.insert sql, "timer", { - room_id | status | input_time | remaining_time_at_paused | finish_at - "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.PAUSED.id | 60 | 30 | "2000-01-01 10:30:30" } // @formatter:on @@ -287,9 +289,11 @@ class TimerController_IT extends AbstractController_IT { final updatedTimer = sql.firstRow("SELECT * FROM timer") updatedTimer.input_time == 60 updatedTimer.remaining_time_at_paused == null + updatedTimer.status == TimerStatus.RUNNING.id response.inputTime == 60 response.remainingTimeAtPaused == null + response.status == TimerStatus.RUNNING StepVerifier.create(this.timerFlux) .expectNextMatches({ @@ -299,7 +303,7 @@ class TimerController_IT extends AbstractController_IT { .verify() } - def "タイマー再開API: 異常系 タイマーが準備中以外の場合は400エラー"() { + def "タイマー再開API: 異常系 タイマーが一時停止中以外の場合は400エラー"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -331,8 +335,8 @@ class TimerController_IT extends AbstractController_IT { where: timerStatus || expectedErrorCode + TimerStatus.READY || ErrorCode.TIMER_CANNOT_BE_RESUMED TimerStatus.RUNNING || ErrorCode.TIMER_CANNOT_BE_RESUMED - TimerStatus.PAUSED || ErrorCode.TIMER_CANNOT_BE_RESUMED } def "タイマー再開API: 異常系 未認証の場合は401エラー"() { @@ -399,13 +403,15 @@ class TimerController_IT extends AbstractController_IT { final updatedTimer = sql.firstRow("SELECT * FROM timer") updatedTimer.input_time == 60 updatedTimer.remaining_time_at_paused != null + updatedTimer.status == TimerStatus.PAUSED.id response.inputTime == 60 response.remainingTimeAtPaused != null + response.status == TimerStatus.PAUSED StepVerifier.create(this.timerFlux) .expectNextMatches({ - it.inputTime == 60 && it.remainingTimeAtPaused.isPresent() && it.status == TimerStatus.READY + it.inputTime == 60 && it.remainingTimeAtPaused.isPresent() && it.status == TimerStatus.PAUSED }) .thenCancel() .verify() From 4b155c337265b737f49f3aa0e627b3d8022f38a6 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 06:22:43 +0900 Subject: [PATCH 096/189] =?UTF-8?q?[test]=20=E3=82=BF=E3=82=A4=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E3=83=AA=E3=82=BB=E3=83=83=E3=83=88API=E3=81=AE?= =?UTF-8?q?=E7=B5=B1=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/TimerController_IT.groovy | 121 +++++++++++++++++- 1 file changed, 118 insertions(+), 3 deletions(-) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy index 7e457939..e170d6e4 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -102,7 +102,7 @@ class TimerController_IT extends AbstractController_IT { "00000000-0000-0000-0000-000000000001" | ErrorCode.NOT_FOUND_ROOM } - def "タイマー開始API: 正常系 タイマーを開始できる"() { + def "タイマー開始API: 正常系 準備中のタイマーを開始できる"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -255,7 +255,7 @@ class TimerController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } - def "タイマー再開API: 正常系 タイマーを再開できる"() { + def "タイマー再開API: 正常系 一時停止中のタイマーを再開できる"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -369,7 +369,7 @@ class TimerController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } - def "タイマー一時停止API: 正常系 タイマーを一時停止できる"() { + def "タイマー一時停止API: 正常系 実行中のタイマーを一時停止できる"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -483,6 +483,121 @@ class TimerController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } + def "タイマーリセットAPI: 正常系 準備中以外のタイマーをリセットできる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | inputStatus.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + when: + final query = + """ + mutation { + resetTimer { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + final response = this.executeWebSocket(query, "resetTimer", Timer) + + then: + final updatedTimer = sql.firstRow("SELECT * FROM timer") + updatedTimer.input_time == 60 + updatedTimer.remaining_time_at_paused == null + updatedTimer.status == TimerStatus.READY.id + + response.inputTime == 60 + response.remainingTimeAtPaused == null + response.status == TimerStatus.READY + + StepVerifier.create(this.timerFlux) + .expectNextMatches({ + it.inputTime == 60 && it.remainingTimeAtPaused.isEmpty() && it.status == TimerStatus.READY + }) + .thenCancel() + .verify() + + where: + inputStatus << [ + TimerStatus.RUNNING, + TimerStatus.PAUSED, + ] + } + + def "タイマーリセットAPI: 異常系 タイマー準備中の場合は400エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + expect: + final query = + """ + mutation { + resetTimer { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.executeWebSocket(query, new BadRequestException(ErrorCode.TIMER_CANNOT_BE_RESET)) + } + + def "タイマーリセットAPI: 異常系 未認証の場合は401エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.RUNNING.id | 60 | 30 | "2000-01-01 10:30:30" + } + // @formatter:on + + this.connectWebSocketGraphQL() + + expect: + final query = + """ + mutation { + resetTimer { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + } + def "タイマー購読API: 正常系 タイマー変更イベントを購読できる"() { given: // @formatter:off From 9b1e93b0a13656d92be6d05ce1f539b675cf9a16 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 06:40:02 +0900 Subject: [PATCH 097/189] =?UTF-8?q?[feat]=20=E3=82=B9=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=89=E3=82=92=E9=80=B2=E3=82=81=E3=82=8BAPI=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 11 ++++ .../api/controller/SlideController.java | 50 +++++++++++++++++++ .../api/request/TimerResumeRequest.java | 41 --------------- .../api/response/PointerControlResponse.java | 2 +- .../api/response/PointerRotationResponse.java | 2 +- .../api/response/SlideControlResponse.java | 27 ---------- .../usecase/slide/GoNextSlideUseCase.java | 7 ++- .../usecase/slide/GoPreviousSlideUseCase.java | 7 ++- .../slide/GoNextSlideUseCase_UT.groovy | 2 +- .../slide/GoPreviousSlideUseCase_UT.groovy | 2 +- 10 files changed, 71 insertions(+), 80 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/SlideControlResponse.java diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java index 6067dd93..ed060c29 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -4,6 +4,7 @@ import org.springframework.context.annotation.Configuration; import dev.abelab.smartpointer.domain.model.TimerModel; +import dev.abelab.smartpointer.enums.SlideControl; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; import reactor.util.concurrent.Queues; @@ -24,4 +25,14 @@ public Flux timerFlux(final Sinks.Many timerSink) { return timerSink.asFlux(); } + @Bean + public Sinks.Many slideControlSink() { + return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); + } + + @Bean + public Flux slideControlFlux(final Sinks.Many slideControlSink) { + return slideControlSink.asFlux(); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java new file mode 100644 index 00000000..99ae4689 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java @@ -0,0 +1,50 @@ +package dev.abelab.smartpointer.infrastructure.api.controller; + +import java.util.Objects; + +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.stereotype.Controller; + +import dev.abelab.smartpointer.auth.LoginUserDetails; +import dev.abelab.smartpointer.enums.SlideControl; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.UnauthorizedException; +import dev.abelab.smartpointer.usecase.slide.GoNextSlideUseCase; +import lombok.RequiredArgsConstructor; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Sinks; + +/** + * スライドコントローラ + */ +@Controller +@RequiredArgsConstructor +public class SlideController { + + private final Flux slideControlFlux; + + private final Sinks.Many slideControlSink; + + private final GoNextSlideUseCase goNextSlideUseCase; + + /** + * スライドを進めるAPI + * + * @param loginUser ログインユーザ + * @return スライド操作 + */ + @MutationMapping + public SlideControl goNextSlide( // + @AuthenticationPrincipal final LoginUserDetails loginUser // + ) { + if (Objects.isNull(loginUser)) { + throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); + } + + final var slideControl = this.goNextSlideUseCase.handle(loginUser.getRoomId()); + this.slideControlSink.tryEmitNext(slideControl); + return slideControl; + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java deleted file mode 100644 index 8b1d2be9..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/request/TimerResumeRequest.java +++ /dev/null @@ -1,41 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.request; - -import dev.abelab.smartpointer.exception.BadRequestException; -import dev.abelab.smartpointer.exception.ErrorCode; -import dev.abelab.smartpointer.util.JsonMessageUtil; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * タイマー再開リクエスト - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class TimerResumeRequest implements BaseRequest { - - /** - * 残り時間[s] - */ - Integer value; - - public TimerResumeRequest(final String payload) { - final var object = JsonMessageUtil.convertJsonToObject(payload, TimerResumeRequest.class); - this.value = object.getValue(); - } - - /** - * バリデーション - */ - @Override - public void validate() { - // 残り時間 - if (this.getValue() < 1 || this.getValue() > 3600) { - throw new BadRequestException(ErrorCode.INVALID_TIMER_INPUT_TIME); - } - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java index ebb24d85..120bf849 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerControlResponse.java @@ -7,7 +7,7 @@ import lombok.NoArgsConstructor; /** - * ポインター操作レスポンス + * ポインター操作 */ @Data @Builder diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerRotationResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerRotationResponse.java index 29f36731..5a504cf2 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerRotationResponse.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/PointerRotationResponse.java @@ -7,7 +7,7 @@ import lombok.NoArgsConstructor; /** - * ポインター回転数レスポンス + * ポインター回転数 */ @Data @Builder diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/SlideControlResponse.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/SlideControlResponse.java deleted file mode 100644 index 17290bc4..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/response/SlideControlResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -package dev.abelab.smartpointer.infrastructure.api.response; - -import dev.abelab.smartpointer.enums.SlideControl; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * スライド操作レスポンス - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class SlideControlResponse { - - /** - * スライド操作ID - */ - Integer control; - - public SlideControlResponse(final SlideControl slideControl) { - this.control = slideControl.getId(); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java index 0e649e92..eb818a35 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java @@ -7,7 +7,6 @@ import dev.abelab.smartpointer.enums.SlideControl; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.NotFoundException; -import dev.abelab.smartpointer.infrastructure.api.response.SlideControlResponse; import lombok.RequiredArgsConstructor; /** @@ -23,16 +22,16 @@ public class GoNextSlideUseCase { * Handle UseCase * * @param roomId ルームID - * @return スライド操作レスポンス + * @return スライド操作 */ @Transactional - public SlideControlResponse handle(final String roomId) { + public SlideControl handle(final String roomId) { // ルームの存在チェック if (!this.roomRepository.existsById(roomId)) { throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); } - return new SlideControlResponse(SlideControl.NEXT); + return SlideControl.NEXT; } } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java index fee9bfb9..1d8af220 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java @@ -7,7 +7,6 @@ import dev.abelab.smartpointer.enums.SlideControl; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.NotFoundException; -import dev.abelab.smartpointer.infrastructure.api.response.SlideControlResponse; import lombok.RequiredArgsConstructor; /** @@ -23,16 +22,16 @@ public class GoPreviousSlideUseCase { * Handle UseCase * * @param roomId ルームID - * @return スライド操作レスポンス + * @return スライド操作 */ @Transactional - public SlideControlResponse handle(final String roomId) { + public SlideControl handle(final String roomId) { // ルームの存在チェック if (!this.roomRepository.existsById(roomId)) { throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); } - return new SlideControlResponse(SlideControl.PREVIOUS); + return SlideControl.PREVIOUS; } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy index 024092fe..8645e1f5 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy @@ -26,7 +26,7 @@ class GoNextSlideUseCase_UT extends AbstractUseCase_UT { then: 1 * this.roomRepository.existsById(room.id) >> true - result.control == SlideControl.NEXT.id + result == SlideControl.NEXT } def "handle: ルームが存在しない場合は404エラー"() { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy index bc281d65..8d7a99bf 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy @@ -26,7 +26,7 @@ class GoPreviousSlideUseCase_UT extends AbstractUseCase_UT { then: 1 * this.roomRepository.existsById(room.id) >> true - result.control == SlideControl.PREVIOUS.id + result == SlideControl.PREVIOUS } def "handle: ルームが存在しない場合は404エラー"() { From 6a640bbe27219c535f4b5395421220d38002c95e Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 06:46:20 +0900 Subject: [PATCH 098/189] =?UTF-8?q?[test]=20=E3=82=B9=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=89=E3=82=92=E9=80=B2=E3=82=81=E3=82=8BAPI=E3=81=AE?= =?UTF-8?q?=E7=B5=B1=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/SlideController_IT.groovy | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy new file mode 100644 index 00000000..6dabaaf2 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy @@ -0,0 +1,75 @@ +package dev.abelab.smartpointer.infrastructure.api.controller + +import dev.abelab.smartpointer.enums.SlideControl +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.UnauthorizedException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.helper.TableHelper +import org.springframework.beans.factory.annotation.Autowired +import reactor.core.publisher.Flux +import reactor.core.publisher.Sinks +import reactor.test.StepVerifier + +/** + * SlideControllerの統合テスト + */ +class SlideController_IT extends AbstractController_IT { + + @Autowired + Flux slideControlFlux + + @Autowired + Sinks.Many slideControlSink + + def "スライドを進めるAPI: 正常系 スライドを進める"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + when: + final query = + """ + mutation { + goNextSlide + } + """ + final response = this.executeWebSocket(query, "goNextSlide", SlideControl) + + then: + response == SlideControl.NEXT + + StepVerifier.create(this.slideControlFlux) + .expectNext(SlideControl.NEXT) + .thenCancel() + .verify() + } + + def "スライドを進めるAPI: 異常系 未認証の場合は401エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + this.connectWebSocketGraphQL() + + expect: + final query = + """ + mutation { + goNextSlide + } + """ + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + } + +} From 8f972349937efd057240029923cb943f88a2a404 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 06:47:32 +0900 Subject: [PATCH 099/189] =?UTF-8?q?[feat]=20=E3=82=B9=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=89=E3=82=92=E6=88=BB=E3=81=99API=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/SlideController.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java index 99ae4689..77fe39f7 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java @@ -11,6 +11,7 @@ import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.UnauthorizedException; import dev.abelab.smartpointer.usecase.slide.GoNextSlideUseCase; +import dev.abelab.smartpointer.usecase.slide.GoPreviousSlideUseCase; import lombok.RequiredArgsConstructor; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; @@ -28,6 +29,8 @@ public class SlideController { private final GoNextSlideUseCase goNextSlideUseCase; + private final GoPreviousSlideUseCase goPreviousSlideUseCase; + /** * スライドを進めるAPI * @@ -47,4 +50,23 @@ public SlideControl goNextSlide( // return slideControl; } + /** + * スライドを戻すAPI + * + * @param loginUser ログインユーザ + * @return スライド操作 + */ + @MutationMapping + public SlideControl goPreviousSlide( // + @AuthenticationPrincipal final LoginUserDetails loginUser // + ) { + if (Objects.isNull(loginUser)) { + throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); + } + + final var slideControl = this.goPreviousSlideUseCase.handle(loginUser.getRoomId()); + this.slideControlSink.tryEmitNext(slideControl); + return slideControl; + } + } From 64a6b1a7b174b7fe27f471fc936e1b4a1fca536f Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 06:49:10 +0900 Subject: [PATCH 100/189] =?UTF-8?q?[test]=20=E3=82=B9=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=89=E3=82=92=E6=88=BB=E3=81=99API=E3=81=AE=E7=B5=B1?= =?UTF-8?q?=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/SlideController_IT.groovy | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy index 6dabaaf2..6062876a 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy @@ -72,4 +72,55 @@ class SlideController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } + def "スライドを戻すAPI: 正常系 スライドを戻す"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + when: + final query = + """ + mutation { + goPreviousSlide + } + """ + final response = this.executeWebSocket(query, "goPreviousSlide", SlideControl) + + then: + response == SlideControl.PREVIOUS + + StepVerifier.create(this.slideControlFlux) + .expectNext(SlideControl.PREVIOUS) + .thenCancel() + .verify() + } + + def "スライドを戻すAPI: 異常系 未認証の場合は401エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + this.connectWebSocketGraphQL() + + expect: + final query = + """ + mutation { + goPreviousSlide + } + """ + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + } + } From cf61845c9cbd5e9456a7992292e18524feafa1a2 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 06:55:59 +0900 Subject: [PATCH 101/189] =?UTF-8?q?[feat]=20=E3=82=B9=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=89=E6=93=8D=E4=BD=9C=E8=B3=BC=E8=AA=ADAPI=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 6 ++-- .../domain/model/SlideControlModel.java | 28 +++++++++++++++++++ .../api/controller/SlideController.java | 27 +++++++++++++++--- .../usecase/slide/GoNextSlideUseCase.java | 5 ++-- .../usecase/slide/GoPreviousSlideUseCase.java | 5 ++-- .../slide/GoNextSlideUseCase_UT.groovy | 3 +- .../slide/GoPreviousSlideUseCase_UT.groovy | 3 +- 7 files changed, 64 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/model/SlideControlModel.java diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java index ed060c29..9b063abc 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -3,8 +3,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import dev.abelab.smartpointer.domain.model.SlideControlModel; import dev.abelab.smartpointer.domain.model.TimerModel; -import dev.abelab.smartpointer.enums.SlideControl; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; import reactor.util.concurrent.Queues; @@ -26,12 +26,12 @@ public Flux timerFlux(final Sinks.Many timerSink) { } @Bean - public Sinks.Many slideControlSink() { + public Sinks.Many slideControlSink() { return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); } @Bean - public Flux slideControlFlux(final Sinks.Many slideControlSink) { + public Flux slideControlFlux(final Sinks.Many slideControlSink) { return slideControlSink.asFlux(); } diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/SlideControlModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/SlideControlModel.java new file mode 100644 index 00000000..578298c3 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/SlideControlModel.java @@ -0,0 +1,28 @@ +package dev.abelab.smartpointer.domain.model; + +import dev.abelab.smartpointer.enums.SlideControl; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * スライド操作モデル + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SlideControlModel { + + /** + * ルームID + */ + String roomId; + + /** + * スライド操作 + */ + SlideControl slideControl; + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java index 77fe39f7..6aa08796 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java @@ -2,11 +2,15 @@ import java.util.Objects; +import org.reactivestreams.Publisher; +import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.SubscriptionMapping; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; import dev.abelab.smartpointer.auth.LoginUserDetails; +import dev.abelab.smartpointer.domain.model.SlideControlModel; import dev.abelab.smartpointer.enums.SlideControl; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.UnauthorizedException; @@ -23,9 +27,9 @@ @RequiredArgsConstructor public class SlideController { - private final Flux slideControlFlux; + private final Flux slideControlFlux; - private final Sinks.Many slideControlSink; + private final Sinks.Many slideControlSink; private final GoNextSlideUseCase goNextSlideUseCase; @@ -47,7 +51,7 @@ public SlideControl goNextSlide( // final var slideControl = this.goNextSlideUseCase.handle(loginUser.getRoomId()); this.slideControlSink.tryEmitNext(slideControl); - return slideControl; + return slideControl.getSlideControl(); } /** @@ -66,7 +70,22 @@ public SlideControl goPreviousSlide( // final var slideControl = this.goPreviousSlideUseCase.handle(loginUser.getRoomId()); this.slideControlSink.tryEmitNext(slideControl); - return slideControl; + return slideControl.getSlideControl(); + } + + /** + * スライド操作購読API + * + * @param roomId ルームID + * @return スライド操作 + */ + @SubscriptionMapping + public Publisher subscribeToSlideControl( // + @Argument final String roomId // + ) { + return this.slideControlFlux // + .filter(slideControlModel -> slideControlModel.getRoomId().equals(roomId)) // + .map(SlideControlModel::getSlideControl); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java index eb818a35..c02da259 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase.java @@ -3,6 +3,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import dev.abelab.smartpointer.domain.model.SlideControlModel; import dev.abelab.smartpointer.domain.repository.RoomRepository; import dev.abelab.smartpointer.enums.SlideControl; import dev.abelab.smartpointer.exception.ErrorCode; @@ -25,13 +26,13 @@ public class GoNextSlideUseCase { * @return スライド操作 */ @Transactional - public SlideControl handle(final String roomId) { + public SlideControlModel handle(final String roomId) { // ルームの存在チェック if (!this.roomRepository.existsById(roomId)) { throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); } - return SlideControl.NEXT; + return new SlideControlModel(roomId, SlideControl.NEXT); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java index 1d8af220..f55654f6 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase.java @@ -3,6 +3,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import dev.abelab.smartpointer.domain.model.SlideControlModel; import dev.abelab.smartpointer.domain.repository.RoomRepository; import dev.abelab.smartpointer.enums.SlideControl; import dev.abelab.smartpointer.exception.ErrorCode; @@ -25,13 +26,13 @@ public class GoPreviousSlideUseCase { * @return スライド操作 */ @Transactional - public SlideControl handle(final String roomId) { + public SlideControlModel handle(final String roomId) { // ルームの存在チェック if (!this.roomRepository.existsById(roomId)) { throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); } - return SlideControl.PREVIOUS; + return new SlideControlModel(roomId, SlideControl.PREVIOUS); } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy index 8645e1f5..6d900b45 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoNextSlideUseCase_UT.groovy @@ -26,7 +26,8 @@ class GoNextSlideUseCase_UT extends AbstractUseCase_UT { then: 1 * this.roomRepository.existsById(room.id) >> true - result == SlideControl.NEXT + result.roomId == room.id + result.slideControl == SlideControl.NEXT } def "handle: ルームが存在しない場合は404エラー"() { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy index 8d7a99bf..430f3740 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/slide/GoPreviousSlideUseCase_UT.groovy @@ -26,7 +26,8 @@ class GoPreviousSlideUseCase_UT extends AbstractUseCase_UT { then: 1 * this.roomRepository.existsById(room.id) >> true - result == SlideControl.PREVIOUS + result.roomId == room.id + result.slideControl == SlideControl.PREVIOUS } def "handle: ルームが存在しない場合は404エラー"() { From 1a06f744d2365126b0c1354f127aa1d7bd4068fe Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 14:07:36 +0900 Subject: [PATCH 102/189] =?UTF-8?q?[test]=20=E3=82=B9=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=89=E6=93=8D=E4=BD=9C=E8=B3=BC=E8=AA=ADAPI=E3=81=AE?= =?UTF-8?q?=E7=B5=B1=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/SlideController_IT.groovy | 72 +++++++++++++++++-- 1 file changed, 68 insertions(+), 4 deletions(-) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy index 6062876a..8e9d1ecd 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy @@ -1,5 +1,6 @@ package dev.abelab.smartpointer.infrastructure.api.controller +import dev.abelab.smartpointer.domain.model.SlideControlModel import dev.abelab.smartpointer.enums.SlideControl import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.UnauthorizedException @@ -16,10 +17,10 @@ import reactor.test.StepVerifier class SlideController_IT extends AbstractController_IT { @Autowired - Flux slideControlFlux + Flux slideControlFlux @Autowired - Sinks.Many slideControlSink + Sinks.Many slideControlSink def "スライドを進めるAPI: 正常系 スライドを進める"() { given: @@ -46,7 +47,7 @@ class SlideController_IT extends AbstractController_IT { response == SlideControl.NEXT StepVerifier.create(this.slideControlFlux) - .expectNext(SlideControl.NEXT) + .expectNextMatches({ it.slideControl == SlideControl.NEXT }) .thenCancel() .verify() } @@ -97,7 +98,7 @@ class SlideController_IT extends AbstractController_IT { response == SlideControl.PREVIOUS StepVerifier.create(this.slideControlFlux) - .expectNext(SlideControl.PREVIOUS) + .expectNextMatches({ it.slideControl == SlideControl.PREVIOUS }) .thenCancel() .verify() } @@ -123,4 +124,67 @@ class SlideController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } + def "スライド操作購読API: 正常系 スライド操作を購読できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + "00000000-0000-0000-0000-000000000001" | RandomHelper.numeric(6) + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + final query = """ + subscription { + subscribeToSlideControl(roomId: "${loginUser.roomId}") + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToSlideControl", SlideControl) + + when: + this.slideControlSink.tryEmitNext(new SlideControlModel("00000000-0000-0000-0000-000000000000", SlideControl.NEXT)) + this.slideControlSink.tryEmitNext(new SlideControlModel("00000000-0000-0000-0000-000000000000", SlideControl.PREVIOUS)) + this.slideControlSink.tryEmitNext(new SlideControlModel("00000000-0000-0000-0000-000000000001", SlideControl.NEXT)) + + then: + StepVerifier.create(response) + .expectNext(SlideControl.NEXT) + .expectNext(SlideControl.PREVIOUS) + .thenCancel() + .verify() + } + + def "スライド購読API: 正常系 別ルームのタイマー変更は通知されない"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + "00000000-0000-0000-0000-000000000001" | RandomHelper.numeric(6) + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + final query = """ + subscription { + subscribeToSlideControl(roomId: "${loginUser.roomId}") + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToSlideControl", SlideControl) + + when: + this.slideControlSink.tryEmitNext(new SlideControlModel("00000000-0000-0000-0000-000000000001", SlideControl.NEXT)) + + then: + StepVerifier.create(response) + .expectNextCount(0) + .thenCancel() + .verify() + } + } From 460297ae5507f814b36224e7a2fd2606003022a8 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 14:37:43 +0900 Subject: [PATCH 103/189] =?UTF-8?q?[feat]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E6=93=8D=E4=BD=9CAPI=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 11 ++++ .../domain/model/PointerControlModel.java | 38 +++++++++++++ .../model/PointerControlOrientationModel.java | 32 +++++++++++ .../api/controller/PointerController.java | 55 +++++++++++++++++++ .../api/type/PointerControl.java | 33 +++++++++++ .../api/type/PointerControlOrientation.java | 39 +++++++++++++ .../pointer/ControlPointerUseCase.java | 39 ------------- .../usecase/pointer/MovePointerUseCase.java | 33 +++++++++++ .../main/resources/graphql/schema.graphqls | 19 ++++++- .../pointer/ControlPointerUseCase_UT.groovy | 50 ----------------- .../pointer/MovePointerUseCase_UT.groovy | 34 ++++++++++++ 11 files changed, 292 insertions(+), 91 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/model/PointerControlModel.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/model/PointerControlOrientationModel.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/PointerControl.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/PointerControlOrientation.java delete mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/pointer/MovePointerUseCase.java delete mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase_UT.groovy create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/MovePointerUseCase_UT.groovy diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java index 9b063abc..0fa5e96a 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -3,6 +3,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import dev.abelab.smartpointer.domain.model.PointerControlModel; import dev.abelab.smartpointer.domain.model.SlideControlModel; import dev.abelab.smartpointer.domain.model.TimerModel; import reactor.core.publisher.Flux; @@ -35,4 +36,14 @@ public Flux slideControlFlux(final Sinks.Many pointerControlSink() { + return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); + } + + @Bean + public Flux pointerControlFlux(final Sinks.Many pointerControlSink) { + return pointerControlSink.asFlux(); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/PointerControlModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/PointerControlModel.java new file mode 100644 index 00000000..4586e5ba --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/PointerControlModel.java @@ -0,0 +1,38 @@ +package dev.abelab.smartpointer.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ポインター操作モデル + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PointerControlModel { + + /** + * ルームID + */ + String roomId; + + /** + * 操作者 + */ + UserModel user; + + /** + * ポインター操作方向 + */ + PointerControlOrientationModel orientation; + + public PointerControlModel(final String roomId, final UserModel user, final Double alpha, final Double beta, final Double gamma) { + this.roomId = roomId; + this.user = user; + this.orientation = new PointerControlOrientationModel(alpha, beta, gamma); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/PointerControlOrientationModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/PointerControlOrientationModel.java new file mode 100644 index 00000000..d3957cf5 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/PointerControlOrientationModel.java @@ -0,0 +1,32 @@ +package dev.abelab.smartpointer.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ポインター操作方向モデル + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PointerControlOrientationModel { + + /** + * α値 + */ + Double alpha; + + /** + * β値 + */ + Double beta; + + /** + * γ値 + */ + Double gamma; + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java new file mode 100644 index 00000000..ffae8eb4 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java @@ -0,0 +1,55 @@ +package dev.abelab.smartpointer.infrastructure.api.controller; + +import java.util.Objects; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.stereotype.Controller; + +import dev.abelab.smartpointer.auth.LoginUserDetails; +import dev.abelab.smartpointer.domain.model.PointerControlModel; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.UnauthorizedException; +import dev.abelab.smartpointer.infrastructure.api.type.PointerControl; +import dev.abelab.smartpointer.usecase.pointer.MovePointerUseCase; +import lombok.RequiredArgsConstructor; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Sinks; + +/** + * ポインターコントローラ + */ +@Controller +@RequiredArgsConstructor +public class PointerController { + + private final Flux pointerControlFlux; + + private final Sinks.Many pointerControlSink; + + private final MovePointerUseCase movePointerUseCase; + + /** + * ポインター操作API + * + * @param loginUser ログインユーザ + * @return ポインター操作 + */ + @MutationMapping + public PointerControl movePointer( // + @AuthenticationPrincipal final LoginUserDetails loginUser, // + @Argument final Double alpha, // + @Argument final Double beta, // + @Argument final Double gamma // + ) { + if (Objects.isNull(loginUser)) { + throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); + } + + final var pointerControl = this.movePointerUseCase.handle(loginUser.getRoomId(), loginUser, alpha, beta, gamma); + this.pointerControlSink.tryEmitNext(pointerControl); + return new PointerControl(pointerControl); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/PointerControl.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/PointerControl.java new file mode 100644 index 00000000..514629fc --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/PointerControl.java @@ -0,0 +1,33 @@ +package dev.abelab.smartpointer.infrastructure.api.type; + +import dev.abelab.smartpointer.domain.model.PointerControlModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ポインター操作 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PointerControl { + + /** + * 操作者 + */ + User user; + + /** + * ポインター操作方向 + */ + PointerControlOrientation orientation; + + public PointerControl(final PointerControlModel pointerControlModel) { + this.user = new User(pointerControlModel.getUser()); + this.orientation = new PointerControlOrientation(pointerControlModel.getOrientation()); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/PointerControlOrientation.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/PointerControlOrientation.java new file mode 100644 index 00000000..66cf07fd --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/PointerControlOrientation.java @@ -0,0 +1,39 @@ +package dev.abelab.smartpointer.infrastructure.api.type; + +import dev.abelab.smartpointer.domain.model.PointerControlOrientationModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ポインター操作方向 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PointerControlOrientation { + + /** + * α値 + */ + Double alpha; + + /** + * β値 + */ + Double beta; + + /** + * γ値 + */ + Double gamma; + + public PointerControlOrientation(final PointerControlOrientationModel pointerControlOrientationModel) { + this.alpha = pointerControlOrientationModel.getAlpha(); + this.beta = pointerControlOrientationModel.getBeta(); + this.gamma = pointerControlOrientationModel.getGamma(); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase.java deleted file mode 100644 index c33b7eb0..00000000 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase.java +++ /dev/null @@ -1,39 +0,0 @@ -package dev.abelab.smartpointer.usecase.pointer; - -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import dev.abelab.smartpointer.domain.repository.RoomRepository; -import dev.abelab.smartpointer.exception.ErrorCode; -import dev.abelab.smartpointer.exception.NotFoundException; -import dev.abelab.smartpointer.infrastructure.api.request.PointerControlRequest; -import dev.abelab.smartpointer.infrastructure.api.response.PointerControlResponse; -import lombok.RequiredArgsConstructor; - -/** - * ポインター操作ユースケース - */ -@RequiredArgsConstructor -@Component -public class ControlPointerUseCase { - - private final RoomRepository roomRepository; - - /** - * Handle UseCase - * - * @param roomId ルームID - * @param requestBody ポインター操作リクエスト - * @return ポインター操作レスポンス - */ - @Transactional - public PointerControlResponse handle(final String roomId, final PointerControlRequest requestBody) { - // ルームの存在チェック - if (!this.roomRepository.existsById(roomId)) { - throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); - } - - return new PointerControlResponse(requestBody, true); - } - -} diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/MovePointerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/MovePointerUseCase.java new file mode 100644 index 00000000..73ecafee --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/MovePointerUseCase.java @@ -0,0 +1,33 @@ +package dev.abelab.smartpointer.usecase.pointer; + +import org.springframework.stereotype.Component; + +import dev.abelab.smartpointer.domain.model.PointerControlModel; +import dev.abelab.smartpointer.domain.model.UserModel; +import lombok.RequiredArgsConstructor; + +/** + * ポインター操作ユースケース + */ +@RequiredArgsConstructor +@Component +public class MovePointerUseCase { + + /** + * Handle UseCase + * + * @param roomId ルームID + * @param loginUser ログインユーザ + * @param alpha α値 + * @param beta β値 + * @param gamma γ値 + * @return ポインター操作 + */ + public PointerControlModel handle(final String roomId, final UserModel loginUser, final Double alpha, final Double beta, + final Double gamma) { + // 60rps/userでテーブルロックするとパフォーマンスが落ちるので + // ルームの存在チェックは行わない + return new PointerControlModel(roomId, loginUser, alpha, beta, gamma); + } + +} diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 5566a2ff..32771efc 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -105,12 +105,27 @@ type Mutation { """ ポインター操作API """ - movePointer: PointerControl! + movePointer( + """ + α値 + """ + alpha: Float, + + """ + β値 + """ + beta: Float, + + """ + γ値 + """ + gamma: Float, + ): PointerControl! """ ポインター切断API """ - disconnectPointer: PointerControl! + disconnectPointer: User! } type Subscription { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase_UT.groovy deleted file mode 100644 index eeb6e897..00000000 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ControlPointerUseCase_UT.groovy +++ /dev/null @@ -1,50 +0,0 @@ -package dev.abelab.smartpointer.usecase.pointer - -import dev.abelab.smartpointer.domain.model.RoomModel -import dev.abelab.smartpointer.exception.BaseException -import dev.abelab.smartpointer.exception.ErrorCode -import dev.abelab.smartpointer.exception.NotFoundException -import dev.abelab.smartpointer.helper.RandomHelper -import dev.abelab.smartpointer.infrastructure.api.request.PointerControlRequest -import dev.abelab.smartpointer.usecase.AbstractUseCase_UT -import org.springframework.beans.factory.annotation.Autowired - -/** - * ControlPointerUseCaseの単体テスト - */ -class ControlPointerUseCase_UT extends AbstractUseCase_UT { - - @Autowired - ControlPointerUseCase sut - - def "handle: ポインターを操作する"() { - given: - final room = RandomHelper.mock(RoomModel) - final requestBody = RandomHelper.mock(PointerControlRequest) - - when: - final result = this.sut.handle(room.id, requestBody) - - then: - 1 * this.roomRepository.existsById(room.id) >> true - result.rotation.alpha == requestBody.alpha - result.rotation.beta == requestBody.beta - result.rotation.gamma == requestBody.gamma - result.isActive - } - - def "handle: ルームが存在しない場合は404エラー"() { - given: - final room = RandomHelper.mock(RoomModel) - final requestBody = RandomHelper.mock(PointerControlRequest) - - when: - this.sut.handle(room.id, requestBody) - - then: - 1 * this.roomRepository.existsById(room.id) >> false - final BaseException exception = thrown() - verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) - } - -} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/MovePointerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/MovePointerUseCase_UT.groovy new file mode 100644 index 00000000..e347e01e --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/MovePointerUseCase_UT.groovy @@ -0,0 +1,34 @@ +package dev.abelab.smartpointer.usecase.pointer + + +import dev.abelab.smartpointer.domain.model.RoomModel +import dev.abelab.smartpointer.domain.model.UserModel +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT +import org.springframework.beans.factory.annotation.Autowired + +/** + * MovePointerUseCaseの単体テスト + */ +class MovePointerUseCase_UT extends AbstractUseCase_UT { + + @Autowired + MovePointerUseCase sut + + def "handle: ポインターを操作する"() { + given: + final room = RandomHelper.mock(RoomModel) + final loginUser = RandomHelper.mock(UserModel) + + when: + final result = this.sut.handle(room.id, loginUser, 1.0, 2.0, 3.0) + + then: + result.roomId == room.id + result.user == loginUser + result.orientation.alpha == 1.0 + result.orientation.beta == 2.0 + result.orientation.gamma == 3.0 + } + +} From cd68deea12fe728d109d7eb4804bbc7d140b10ef Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 14:57:06 +0900 Subject: [PATCH 104/189] =?UTF-8?q?[test]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E6=93=8D=E4=BD=9CAPI=E3=81=AE=E7=B5=B1?= =?UTF-8?q?=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PointerController_IT.groovy | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy new file mode 100644 index 00000000..f4d82091 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy @@ -0,0 +1,107 @@ +package dev.abelab.smartpointer.infrastructure.api.controller + +import dev.abelab.smartpointer.domain.model.PointerControlModel +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.UnauthorizedException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.helper.TableHelper +import dev.abelab.smartpointer.infrastructure.api.type.PointerControl +import org.springframework.beans.factory.annotation.Autowired +import reactor.core.publisher.Flux +import reactor.core.publisher.Sinks +import reactor.test.StepVerifier + +/** + * PointerControllerの統合テスト + */ +class PointerController_IT extends AbstractController_IT { + + @Autowired + Flux pointerControlFlux + + @Autowired + Sinks.Many pointerControlSink + + def "ポインター操作API: 正常系 ポインターを操作する"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + when: + final query = + """ + mutation { + movePointer(alpha: 1.0, beta: 2.0, gamma: 3.0) { + user { + id + name + } + orientation { + alpha + beta + gamma + } + } + } + """ + final response = this.executeWebSocket(query, "movePointer", PointerControl) + + then: + response.user.id == loginUser.id + response.user.name == loginUser.name + response.orientation.alpha == 1.0 + response.orientation.beta == 2.0 + response.orientation.gamma == 3.0 + + StepVerifier.create(this.pointerControlFlux) + .expectNextMatches({ + it.user.id == loginUser.id + && it.user.name == loginUser.name + && it.user.roomId == loginUser.roomId + && it.orientation.alpha == 1.0 + && it.orientation.beta == 2.0 + && it.orientation.gamma == 3.0 + }) + .thenCancel() + .verify() + } + + def "ポインター操作API: 異常系 未認証の場合は401エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + this.connectWebSocketGraphQL() + + expect: + final query = + """ + mutation { + movePointer(alpha: 1.0, beta: 2.0, gamma: 3.0) { + user { + id + name + } + orientation { + alpha + beta + gamma + } + } + } + """ + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + } + +} From 6afdd1e4d2150b8b8e88519866c217f483076647 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 15:12:52 +0900 Subject: [PATCH 105/189] =?UTF-8?q?[feat]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E5=88=87=E6=96=ADAPI=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 11 ++++++++ .../api/controller/PointerController.java | 28 +++++++++++++++++++ .../pointer/DisconnectPointerUseCase.java | 14 ++++------ .../DisconnectPointerUseCase_UT.groovy | 10 ++++--- 4 files changed, 50 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java index 0fa5e96a..73e4f98e 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -6,6 +6,7 @@ import dev.abelab.smartpointer.domain.model.PointerControlModel; import dev.abelab.smartpointer.domain.model.SlideControlModel; import dev.abelab.smartpointer.domain.model.TimerModel; +import dev.abelab.smartpointer.domain.model.UserModel; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; import reactor.util.concurrent.Queues; @@ -46,4 +47,14 @@ public Flux pointerControlFlux(final Sinks.Many pointerDisconnectSink() { + return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); + } + + @Bean + public Flux pointerDisconnectFlux(final Sinks.Many pointerDisconnectSink) { + return pointerDisconnectSink.asFlux(); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java index ffae8eb4..53070ec3 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java @@ -9,9 +9,12 @@ import dev.abelab.smartpointer.auth.LoginUserDetails; import dev.abelab.smartpointer.domain.model.PointerControlModel; +import dev.abelab.smartpointer.domain.model.UserModel; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.UnauthorizedException; import dev.abelab.smartpointer.infrastructure.api.type.PointerControl; +import dev.abelab.smartpointer.infrastructure.api.type.User; +import dev.abelab.smartpointer.usecase.pointer.DisconnectPointerUseCase; import dev.abelab.smartpointer.usecase.pointer.MovePointerUseCase; import lombok.RequiredArgsConstructor; import reactor.core.publisher.Flux; @@ -28,8 +31,14 @@ public class PointerController { private final Sinks.Many pointerControlSink; + private final Flux pointerDisconnectFlux; + + private final Sinks.Many pointerDisconnectSink; + private final MovePointerUseCase movePointerUseCase; + private final DisconnectPointerUseCase disconnectPointerUseCase; + /** * ポインター操作API * @@ -52,4 +61,23 @@ public PointerControl movePointer( // return new PointerControl(pointerControl); } + /** + * ポインター切断API + * + * @param loginUser ログインユーザ + * @return ユーザ + */ + @MutationMapping + public User disconnectPointer( // + @AuthenticationPrincipal final LoginUserDetails loginUser // + ) { + if (Objects.isNull(loginUser)) { + throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); + } + + final var user = this.disconnectPointerUseCase.handle(loginUser.getRoomId(), loginUser); + this.pointerDisconnectSink.tryEmitNext(user); + return new User(user); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase.java index fc3d2fbd..c49cd8ff 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase.java @@ -1,12 +1,11 @@ package dev.abelab.smartpointer.usecase.pointer; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; +import dev.abelab.smartpointer.domain.model.UserModel; import dev.abelab.smartpointer.domain.repository.RoomRepository; import dev.abelab.smartpointer.exception.ErrorCode; import dev.abelab.smartpointer.exception.NotFoundException; -import dev.abelab.smartpointer.infrastructure.api.response.PointerControlResponse; import lombok.RequiredArgsConstructor; /** @@ -22,19 +21,16 @@ public class DisconnectPointerUseCase { * Handle UseCase * * @param roomId ルームID - * @return ポインター操作レスポンス + * @param loginUser ログインユーザ + * @return ユーザ */ - @Transactional - public PointerControlResponse handle(final String roomId) { + public UserModel handle(final String roomId, final UserModel loginUser) { // ルームの存在チェック if (!this.roomRepository.existsById(roomId)) { throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); } - return PointerControlResponse.builder() // - .rotation(null) // - .isActive(false) // - .build(); + return loginUser; } } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase_UT.groovy index 3b75d7a8..16ee1c5d 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/DisconnectPointerUseCase_UT.groovy @@ -1,6 +1,7 @@ package dev.abelab.smartpointer.usecase.pointer import dev.abelab.smartpointer.domain.model.RoomModel +import dev.abelab.smartpointer.domain.model.UserModel import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException @@ -19,22 +20,23 @@ class DisconnectPointerUseCase_UT extends AbstractUseCase_UT { def "handle: ポインターを切断する"() { given: final room = RandomHelper.mock(RoomModel) + final loginUser = RandomHelper.mock(UserModel) when: - final result = this.sut.handle(room.id,) + final result = this.sut.handle(room.id, loginUser) then: 1 * this.roomRepository.existsById(room.id) >> true - result.rotation == null - !result.isActive + result == loginUser } def "handle: ルームが存在しない場合は404エラー"() { given: final room = RandomHelper.mock(RoomModel) + final loginUser = RandomHelper.mock(UserModel) when: - this.sut.handle(room.id) + this.sut.handle(room.id, loginUser) then: 1 * this.roomRepository.existsById(room.id) >> false From ee0a536e145ea61c020def3e484c6e09985f8be6 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 15:16:37 +0900 Subject: [PATCH 106/189] =?UTF-8?q?[test]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E5=88=87=E6=96=ADAPI=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PointerController_IT.groovy | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy index f4d82091..e1781204 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy @@ -1,11 +1,13 @@ package dev.abelab.smartpointer.infrastructure.api.controller import dev.abelab.smartpointer.domain.model.PointerControlModel +import dev.abelab.smartpointer.domain.model.UserModel import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.UnauthorizedException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper import dev.abelab.smartpointer.infrastructure.api.type.PointerControl +import dev.abelab.smartpointer.infrastructure.api.type.User import org.springframework.beans.factory.annotation.Autowired import reactor.core.publisher.Flux import reactor.core.publisher.Sinks @@ -22,6 +24,12 @@ class PointerController_IT extends AbstractController_IT { @Autowired Sinks.Many pointerControlSink + @Autowired + Flux pointerDisconnectFlux + + @Autowired + Sinks.Many pointerDisconnectSink + def "ポインター操作API: 正常系 ポインターを操作する"() { given: // @formatter:off @@ -104,4 +112,65 @@ class PointerController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } + def "ポインター切断API: 正常系 ポインターを切断する"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + when: + final query = + """ + mutation { + disconnectPointer { + id + name + } + } + """ + final response = this.executeWebSocket(query, "disconnectPointer", User) + + then: + response.id == loginUser.id + response.name == loginUser.name + + StepVerifier.create(this.pointerDisconnectFlux) + .expectNextMatches({ + it.id == loginUser.id && it.name == loginUser.name && it.roomId == loginUser.roomId + }) + .thenCancel() + .verify() + } + + def "ポインター切断API: 異常系 未認証の場合は401エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + // @formatter:on + + this.connectWebSocketGraphQL() + + expect: + final query = + """ + mutation { + disconnectPointer { + id + name + } + } + """ + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + } + + } From 68fbc5eab5478c5452849cb43a2de50c8f31b9d7 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 15:21:04 +0900 Subject: [PATCH 107/189] =?UTF-8?q?[feat]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E8=B3=BC=E8=AA=ADAPI=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/PointerController.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java index 53070ec3..71f74d6f 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java @@ -2,8 +2,10 @@ import java.util.Objects; +import org.reactivestreams.Publisher; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.SubscriptionMapping; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; @@ -80,4 +82,19 @@ public User disconnectPointer( // return new User(user); } + /** + * ポインター操作購読API + * + * @param roomId ルームID + * @return ポインター + */ + @SubscriptionMapping + public Publisher subscribeToPointer( // + @Argument final String roomId // + ) { + return this.pointerControlFlux // + .filter(pointerControlModel -> pointerControlModel.getRoomId().equals(roomId)) // + .map(PointerControl::new); + } + } From 8f1bc0bfb711f9eb82b748a6afc56b949f583ad9 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 15:30:49 +0900 Subject: [PATCH 108/189] =?UTF-8?q?[test]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E8=B3=BC=E8=AA=ADAPI=E3=81=AE=E7=B5=B1?= =?UTF-8?q?=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PointerController_IT.groovy | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy index e1781204..3248c258 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy @@ -172,5 +172,59 @@ class PointerController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) } + def "ポインター操作購読API: ポインターを購読できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + "00000000-0000-0000-0000-000000000001" | RandomHelper.numeric(6) + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + final query = """ + subscription { + subscribeToPointer(roomId: "${loginUser.roomId}") { + user { + id + name + } + orientation { + alpha + beta + gamma + } + } + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToPointer", PointerControl) + + when: + this.pointerControlSink.tryEmitNext(new PointerControlModel("00000000-0000-0000-0000-000000000000", loginUser, 1.0, 2.0, 3.0)) + this.pointerControlSink.tryEmitNext(new PointerControlModel("00000000-0000-0000-0000-000000000000", loginUser, 0.0, 0.0, 0.0)) + this.pointerControlSink.tryEmitNext(new PointerControlModel("00000000-0000-0000-0000-000000000001", loginUser, 0.0, 0.0, 0.0)) + + then: + StepVerifier.create(response) + .expectNextMatches({ + it.user.id == loginUser.id + && it.user.name == loginUser.name + && it.orientation.alpha == 1.0 + && it.orientation.beta == 2.0 + && it.orientation.gamma == 3.0 + }) + .expectNextMatches({ + it.user.id == loginUser.id + && it.user.name == loginUser.name + && it.orientation.alpha == 0.0 + && it.orientation.beta == 0.0 + && it.orientation.gamma == 0.0 + }) + .thenCancel() + .verify() + } } From 897fd997701da25cf0a33f47eab8d370366d8102 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 15:34:02 +0900 Subject: [PATCH 109/189] =?UTF-8?q?[feat]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E5=88=87=E6=96=AD=E3=82=A4=E3=83=99=E3=83=B3?= =?UTF-8?q?=E3=83=88=E8=B3=BC=E8=AA=ADAPI=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/PointerController.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java index 71f74d6f..598dce61 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java @@ -97,4 +97,19 @@ public Publisher subscribeToPointer( // .map(PointerControl::new); } + /** + * ポインター切断イベント購読API + * + * @param roomId ルームID + * @return ポインター + */ + @SubscriptionMapping + public Publisher subscribeToPointerDisconnectEvent( // + @Argument final String roomId // + ) { + return this.pointerDisconnectFlux // + .filter(userModel -> userModel.getRoomId().equals(roomId)) // + .map(User::new); + } + } From e51ec214bd1fe774be582bc3cf8ad9c42b295257 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 15:39:16 +0900 Subject: [PATCH 110/189] =?UTF-8?q?[test]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E5=88=87=E6=96=AD=E3=82=A4=E3=83=99=E3=83=B3?= =?UTF-8?q?=E3=83=88=E8=B3=BC=E8=AA=ADAPI=E3=81=AE=E7=B5=B1=E5=90=88?= =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PointerController_IT.groovy | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy index 3248c258..e7cf8c86 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy @@ -227,4 +227,43 @@ class PointerController_IT extends AbstractController_IT { .verify() } + def "ポインター切断イベント購読API: ポインター切断イベントを購読できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + "00000000-0000-0000-0000-000000000001" | RandomHelper.numeric(6) + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + this.connectWebSocketGraphQL(loginUser) + + final query = """ + subscription { + subscribeToPointerDisconnectEvent(roomId: "${loginUser.roomId}") { + id + name + } + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToPointerDisconnectEvent", User) + + when: + final user1 = this.login("00000000-0000-0000-0000-000000000000") + final user2 = this.login("00000000-0000-0000-0000-000000000000") + final user3 = this.login("00000000-0000-0000-0000-000000000001") + this.pointerDisconnectSink.tryEmitNext(user1) + this.pointerDisconnectSink.tryEmitNext(user2) + this.pointerDisconnectSink.tryEmitNext(user3) + + then: + StepVerifier.create(response) + .expectNextMatches({ it.id == user1.id && it.name == user1.name }) + .expectNextMatches({ it.id == user2.id && it.name == user2.name }) + .thenCancel() + .verify() + } + } From 4f13fec92af7a79966bc9f1e4ef273f7cda9c142 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 16:08:48 +0900 Subject: [PATCH 111/189] =?UTF-8?q?[feat]=20custom=5Fpointer=E3=83=86?= =?UTF-8?q?=E3=83=BC=E3=83=96=E3=83=AB=E3=82=92=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/entity/CustomPointer.java | 48 ++ .../db/entity/CustomPointerExample.java | 581 ++++++++++++++++++ .../mapper/base/CustomPointerBaseMapper.java | 107 ++++ .../mapper/base/CustomPointerBaseMapper.xml | 274 +++++++++ .../V1_1_2__create_custom_pointer.sql | 15 + 5 files changed, 1025 insertions(+) create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/CustomPointer.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/CustomPointerExample.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/base/CustomPointerBaseMapper.java create mode 100644 app/src/main/resources/db/mapper/base/CustomPointerBaseMapper.xml create mode 100644 app/src/main/resources/db/migration/V1_1_2__create_custom_pointer.sql diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/CustomPointer.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/CustomPointer.java new file mode 100644 index 00000000..4b7b051c --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/CustomPointer.java @@ -0,0 +1,48 @@ +package dev.abelab.smartpointer.infrastructure.db.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CustomPointer { + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column custom_pointer.id + * + * @mbg.generated + */ + private String id; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column custom_pointer.room_id + * + * @mbg.generated + */ + private String roomId; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column custom_pointer.label + * + * @mbg.generated + */ + private String label; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column custom_pointer.url + * + * @mbg.generated + */ + private String url; +} \ No newline at end of file diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/CustomPointerExample.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/CustomPointerExample.java new file mode 100644 index 00000000..c1657b0f --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/CustomPointerExample.java @@ -0,0 +1,581 @@ +package dev.abelab.smartpointer.infrastructure.db.entity; + +import java.util.ArrayList; +import java.util.List; + +public class CustomPointerExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table custom_pointer + * + * @mbg.generated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table custom_pointer + * + * @mbg.generated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table custom_pointer + * + * @mbg.generated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public CustomPointerExample() { + oredCriteria = new ArrayList<>(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table custom_pointer + * + * @mbg.generated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("`id` is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("`id` is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(String value) { + addCriterion("`id` =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(String value) { + addCriterion("`id` <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(String value) { + addCriterion("`id` >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(String value) { + addCriterion("`id` >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(String value) { + addCriterion("`id` <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(String value) { + addCriterion("`id` <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLike(String value) { + addCriterion("`id` like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotLike(String value) { + addCriterion("`id` not like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("`id` in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("`id` not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(String value1, String value2) { + addCriterion("`id` between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(String value1, String value2) { + addCriterion("`id` not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andRoomIdIsNull() { + addCriterion("`room_id` is null"); + return (Criteria) this; + } + + public Criteria andRoomIdIsNotNull() { + addCriterion("`room_id` is not null"); + return (Criteria) this; + } + + public Criteria andRoomIdEqualTo(String value) { + addCriterion("`room_id` =", value, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdNotEqualTo(String value) { + addCriterion("`room_id` <>", value, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdGreaterThan(String value) { + addCriterion("`room_id` >", value, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdGreaterThanOrEqualTo(String value) { + addCriterion("`room_id` >=", value, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdLessThan(String value) { + addCriterion("`room_id` <", value, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdLessThanOrEqualTo(String value) { + addCriterion("`room_id` <=", value, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdLike(String value) { + addCriterion("`room_id` like", value, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdNotLike(String value) { + addCriterion("`room_id` not like", value, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdIn(List values) { + addCriterion("`room_id` in", values, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdNotIn(List values) { + addCriterion("`room_id` not in", values, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdBetween(String value1, String value2) { + addCriterion("`room_id` between", value1, value2, "roomId"); + return (Criteria) this; + } + + public Criteria andRoomIdNotBetween(String value1, String value2) { + addCriterion("`room_id` not between", value1, value2, "roomId"); + return (Criteria) this; + } + + public Criteria andLabelIsNull() { + addCriterion("`label` is null"); + return (Criteria) this; + } + + public Criteria andLabelIsNotNull() { + addCriterion("`label` is not null"); + return (Criteria) this; + } + + public Criteria andLabelEqualTo(String value) { + addCriterion("`label` =", value, "label"); + return (Criteria) this; + } + + public Criteria andLabelNotEqualTo(String value) { + addCriterion("`label` <>", value, "label"); + return (Criteria) this; + } + + public Criteria andLabelGreaterThan(String value) { + addCriterion("`label` >", value, "label"); + return (Criteria) this; + } + + public Criteria andLabelGreaterThanOrEqualTo(String value) { + addCriterion("`label` >=", value, "label"); + return (Criteria) this; + } + + public Criteria andLabelLessThan(String value) { + addCriterion("`label` <", value, "label"); + return (Criteria) this; + } + + public Criteria andLabelLessThanOrEqualTo(String value) { + addCriterion("`label` <=", value, "label"); + return (Criteria) this; + } + + public Criteria andLabelLike(String value) { + addCriterion("`label` like", value, "label"); + return (Criteria) this; + } + + public Criteria andLabelNotLike(String value) { + addCriterion("`label` not like", value, "label"); + return (Criteria) this; + } + + public Criteria andLabelIn(List values) { + addCriterion("`label` in", values, "label"); + return (Criteria) this; + } + + public Criteria andLabelNotIn(List values) { + addCriterion("`label` not in", values, "label"); + return (Criteria) this; + } + + public Criteria andLabelBetween(String value1, String value2) { + addCriterion("`label` between", value1, value2, "label"); + return (Criteria) this; + } + + public Criteria andLabelNotBetween(String value1, String value2) { + addCriterion("`label` not between", value1, value2, "label"); + return (Criteria) this; + } + + public Criteria andUrlIsNull() { + addCriterion("`url` is null"); + return (Criteria) this; + } + + public Criteria andUrlIsNotNull() { + addCriterion("`url` is not null"); + return (Criteria) this; + } + + public Criteria andUrlEqualTo(String value) { + addCriterion("`url` =", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotEqualTo(String value) { + addCriterion("`url` <>", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlGreaterThan(String value) { + addCriterion("`url` >", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlGreaterThanOrEqualTo(String value) { + addCriterion("`url` >=", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLessThan(String value) { + addCriterion("`url` <", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLessThanOrEqualTo(String value) { + addCriterion("`url` <=", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLike(String value) { + addCriterion("`url` like", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotLike(String value) { + addCriterion("`url` not like", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlIn(List values) { + addCriterion("`url` in", values, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotIn(List values) { + addCriterion("`url` not in", values, "url"); + return (Criteria) this; + } + + public Criteria andUrlBetween(String value1, String value2) { + addCriterion("`url` between", value1, value2, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotBetween(String value1, String value2) { + addCriterion("`url` not between", value1, value2, "url"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table custom_pointer + * + * @mbg.generated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table custom_pointer + * + * @mbg.generated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/base/CustomPointerBaseMapper.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/base/CustomPointerBaseMapper.java new file mode 100644 index 00000000..c7fd8e71 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/base/CustomPointerBaseMapper.java @@ -0,0 +1,107 @@ +package dev.abelab.smartpointer.infrastructure.db.mapper.base; + +import dev.abelab.smartpointer.infrastructure.db.entity.CustomPointer; +import dev.abelab.smartpointer.infrastructure.db.entity.CustomPointerExample; +import java.util.List; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.session.RowBounds; + +@Mapper +public interface CustomPointerBaseMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + long countByExample(CustomPointerExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + int deleteByExample(CustomPointerExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + int deleteByPrimaryKey(@Param("id") String id, @Param("roomId") String roomId); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + int insert(CustomPointer row); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + int insertSelective(CustomPointer row); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + List selectByExampleWithRowbounds(CustomPointerExample example, RowBounds rowBounds); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + List selectByExample(CustomPointerExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + CustomPointer selectByPrimaryKey(@Param("id") String id, @Param("roomId") String roomId); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + int updateByExampleSelective(@Param("row") CustomPointer row, @Param("example") CustomPointerExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + int updateByExample(@Param("row") CustomPointer row, @Param("example") CustomPointerExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + int updateByPrimaryKeySelective(CustomPointer row); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table custom_pointer + * + * @mbg.generated + */ + int updateByPrimaryKey(CustomPointer row); +} \ No newline at end of file diff --git a/app/src/main/resources/db/mapper/base/CustomPointerBaseMapper.xml b/app/src/main/resources/db/mapper/base/CustomPointerBaseMapper.xml new file mode 100644 index 00000000..be41a609 --- /dev/null +++ b/app/src/main/resources/db/mapper/base/CustomPointerBaseMapper.xml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + `id`, `room_id`, `label`, `url` + + + + + + delete from `custom_pointer` + where `id` = #{id,jdbcType=CHAR} + and `room_id` = #{roomId,jdbcType=CHAR} + + + + delete from `custom_pointer` + + + + + + + insert into `custom_pointer` (`id`, `room_id`, `label`, + `url`) + values (#{id,jdbcType=CHAR}, #{roomId,jdbcType=CHAR}, #{label,jdbcType=VARCHAR}, + #{url,jdbcType=VARCHAR}) + + + + insert into `custom_pointer` + + + `id`, + + + `room_id`, + + + `label`, + + + `url`, + + + + + #{id,jdbcType=CHAR}, + + + #{roomId,jdbcType=CHAR}, + + + #{label,jdbcType=VARCHAR}, + + + #{url,jdbcType=VARCHAR}, + + + + + + + update `custom_pointer` + + + `id` = #{row.id,jdbcType=CHAR}, + + + `room_id` = #{row.roomId,jdbcType=CHAR}, + + + `label` = #{row.label,jdbcType=VARCHAR}, + + + `url` = #{row.url,jdbcType=VARCHAR}, + + + + + + + + + update `custom_pointer` + set `id` = #{row.id,jdbcType=CHAR}, + `room_id` = #{row.roomId,jdbcType=CHAR}, + `label` = #{row.label,jdbcType=VARCHAR}, + `url` = #{row.url,jdbcType=VARCHAR} + + + + + + + update `custom_pointer` + + + `label` = #{label,jdbcType=VARCHAR}, + + + `url` = #{url,jdbcType=VARCHAR}, + + + where `id` = #{id,jdbcType=CHAR} + and `room_id` = #{roomId,jdbcType=CHAR} + + + + update `custom_pointer` + set `label` = #{label,jdbcType=VARCHAR}, + `url` = #{url,jdbcType=VARCHAR} + where `id` = #{id,jdbcType=CHAR} + and `room_id` = #{roomId,jdbcType=CHAR} + + + \ No newline at end of file diff --git a/app/src/main/resources/db/migration/V1_1_2__create_custom_pointer.sql b/app/src/main/resources/db/migration/V1_1_2__create_custom_pointer.sql new file mode 100644 index 00000000..397defb2 --- /dev/null +++ b/app/src/main/resources/db/migration/V1_1_2__create_custom_pointer.sql @@ -0,0 +1,15 @@ +CREATE TABLE IF NOT EXISTS `custom_pointer` +( + `id` CHAR(36) NOT NULL, + `room_id` CHAR(36) NOT NULL, + `label` VARCHAR(255) NOT NULL, + `url` VARCHAR(255) NOT NULL, + PRIMARY KEY (`id`, `room_id`), + INDEX `fk_custom_pointer_room_id_room_id_idx` (`room_id` ASC) VISIBLE, + CONSTRAINT `fk_custom_pointer_room_id_room_id` + FOREIGN KEY (`room_id`) + REFERENCES `room` (`id`) + ON DELETE CASCADE + ON UPDATE NO ACTION +) + ENGINE = InnoDB \ No newline at end of file From 38aad7d0bf6f9ae8759ffa78b5a6ccf7f5f707bc Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 16:49:17 +0900 Subject: [PATCH 112/189] =?UTF-8?q?[feat]=20GCS=E3=82=AF=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=82=A2=E3=83=B3=E3=83=88=E3=82=92=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 + .../smartpointer/domain/model/FileModel.java | 27 ++++++++ .../smartpointer/exception/ErrorCode.java | 4 +- .../smartpointer/property/GcpProperty.java | 46 ++++++++++++++ .../smartpointer/util/FileStorageUtil.java | 62 +++++++++++++++++++ app/src/main/resources/application-local.yml | 9 ++- app/src/main/resources/application-sample.yml | 9 ++- app/src/main/resources/application-test.yml | 9 ++- app/src/main/resources/i18n/messages.yml | 3 +- .../util/FileStorageUtil_UT.groovy | 31 ++++++++++ 10 files changed, 198 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/model/FileModel.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/property/GcpProperty.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/util/FileStorageUtil.java create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/util/FileStorageUtil_UT.groovy diff --git a/app/build.gradle b/app/build.gradle index 42bbe1d2..22701b30 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -115,6 +115,9 @@ dependencies { // mysql implementation "mysql:mysql-connector-java:8.0.29" + // google cloud + implementation "com.google.cloud:google-cloud-storage:2.11.3" + // test testImplementation "org.spockframework:spock-core:2.2-M1-groovy-4.0" testImplementation "org.spockframework:spock-spring:2.2-M1-groovy-4.0" diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/FileModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/FileModel.java new file mode 100644 index 00000000..e971b3a3 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/FileModel.java @@ -0,0 +1,27 @@ +package dev.abelab.smartpointer.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ファイルモデル + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class FileModel { + + /** + * UUID + */ + private String uuid; + + /** + * ファイルのバイナリ + */ + private byte[] content; + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java index d96a989a..877ef980 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java @@ -58,7 +58,9 @@ public enum ErrorCode { /** * 500 Internal Server Error: 6000~6999 */ - UNEXPECTED_ERROR(6000, "exception.internal_server_error.unexpected_error"); + UNEXPECTED_ERROR(6000, "exception.internal_server_error.unexpected_error"), + + FAILED_TO_UPLOAD_FILE(6001, "exception.internal_server_error.failed_to_upload_file"); /** * エラーコード diff --git a/app/src/main/java/dev/abelab/smartpointer/property/GcpProperty.java b/app/src/main/java/dev/abelab/smartpointer/property/GcpProperty.java new file mode 100644 index 00000000..88bd54f0 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/property/GcpProperty.java @@ -0,0 +1,46 @@ +package dev.abelab.smartpointer.property; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import lombok.Data; + +/** + * GCPプロパティ + */ +@Data +@Configuration +@ConfigurationProperties("gcp") +public class GcpProperty { + + /** + * プロジェクトID + */ + String projectId; + + /** + * 資格情報のファイルパス + */ + String credentialsPath; + + /** + * Cloud Storage + */ + CloudStorage cloudStorage; + + @Data + public static class CloudStorage { + + /** + * 有効フラグ + */ + boolean enabled; + + /** + * バケット名 + */ + String bucketName; + + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/util/FileStorageUtil.java b/app/src/main/java/dev/abelab/smartpointer/util/FileStorageUtil.java new file mode 100644 index 00000000..325749cc --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/util/FileStorageUtil.java @@ -0,0 +1,62 @@ +package dev.abelab.smartpointer.util; + +import java.io.FileInputStream; + +import org.springframework.stereotype.Component; + +import com.google.auth.oauth2.GoogleCredentials; +import com.google.cloud.storage.BlobId; +import com.google.cloud.storage.BlobInfo; +import com.google.cloud.storage.StorageOptions; + +import dev.abelab.smartpointer.domain.model.FileModel; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.InternalServerErrorException; +import dev.abelab.smartpointer.property.GcpProperty; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * ファイルストレージユーティリティ + */ +@Component +@RequiredArgsConstructor +@Slf4j +public class FileStorageUtil { + + private static final String IMAGE_PATH = "images/"; + + private final GcpProperty gcpProperty; + + /** + * ファイルをアップロード + * + * @param fileModel ファイル + * @return URL + */ + public String upload(final FileModel fileModel) { + final var url = String.format("https://storage.googleapis.com/%s/images/%s", // + this.gcpProperty.getCloudStorage().getBucketName(), // + fileModel.getUuid()); + + if (!this.gcpProperty.getCloudStorage().isEnabled()) { + return url; + } + try { + final var storage = StorageOptions.newBuilder() // + .setCredentials(GoogleCredentials.fromStream(new FileInputStream(this.gcpProperty.getCredentialsPath()))) // + .setProjectId(this.gcpProperty.getProjectId()) // + .build().getService(); + + final var blobId = BlobId.of(this.gcpProperty.getCloudStorage().getBucketName(), IMAGE_PATH + fileModel.getUuid()); + final var blobInfo = BlobInfo.newBuilder(blobId).build(); + storage.create(blobInfo, fileModel.getContent()); + + return url; + } catch (final Exception e) { + log.error(e.getMessage(), e); + throw new InternalServerErrorException(ErrorCode.FAILED_TO_UPLOAD_FILE); + } + } + +} diff --git a/app/src/main/resources/application-local.yml b/app/src/main/resources/application-local.yml index 5793958f..d29d4c39 100644 --- a/app/src/main/resources/application-local.yml +++ b/app/src/main/resources/application-local.yml @@ -8,4 +8,11 @@ spring: auth: jwt: secret: 70gdy7X82ya650Vdhb8HqofHniMkPHTIYOIFJA1NKY4= - issuer: dev.abelab.smartpointer \ No newline at end of file + issuer: dev.abelab.smartpointer + +gcp: + project-id: GCP_PROJECT_ID + credentials-path: GCP_CREDENTIALS_PATH + cloud-storage: + enabled: false + bucket-name: GCP_BUCKET_NAME \ No newline at end of file diff --git a/app/src/main/resources/application-sample.yml b/app/src/main/resources/application-sample.yml index 4db166c9..973116f1 100644 --- a/app/src/main/resources/application-sample.yml +++ b/app/src/main/resources/application-sample.yml @@ -3,4 +3,11 @@ spring: url: jdbc:mysql://localhost:3306/smartpointer?useSSL=false&allowPublicKeyRetrieval=true&enabledTLSProtocols=TLSv1.2 username: smartpointer password: smartpointer - driver-class-name: com.mysql.cj.jdbc.Driver \ No newline at end of file + driver-class-name: com.mysql.cj.jdbc.Driver + +gcp: + project-id: GCP_PROJECT_ID + credentials-path: GCP_CREDENTIALS_PATH + cloud-storage: + enabled: false + bucket-name: GCP_BUCKET_NAME \ No newline at end of file diff --git a/app/src/main/resources/application-test.yml b/app/src/main/resources/application-test.yml index 8ca4ac46..7fb92bcd 100644 --- a/app/src/main/resources/application-test.yml +++ b/app/src/main/resources/application-test.yml @@ -10,4 +10,11 @@ spring: auth: jwt: secret: JWT_SECRET - issuer: JWT_ISSUER \ No newline at end of file + issuer: JWT_ISSUER + +gcp: + project-id: GCP_PROJECT_ID + credentials-path: GCP_CREDENTIALS_PATH + cloud-storage: + enabled: false + bucket-name: GCP_BUCKET_NAME \ No newline at end of file diff --git a/app/src/main/resources/i18n/messages.yml b/app/src/main/resources/i18n/messages.yml index 6dbb4e73..96df578e 100644 --- a/app/src/main/resources/i18n/messages.yml +++ b/app/src/main/resources/i18n/messages.yml @@ -20,4 +20,5 @@ exception: conflict: user_name_is_already_exists: そのユーザ名は既に使われています。 internal_server_error: - unexpected_error: 予期しないエラーが発生しました。 \ No newline at end of file + unexpected_error: 予期しないエラーが発生しました。 + failed_to_upload_file: アップロードに失敗しました \ No newline at end of file diff --git a/app/src/test/groovy/dev/abelab/smartpointer/util/FileStorageUtil_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/util/FileStorageUtil_UT.groovy new file mode 100644 index 00000000..e91aa088 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/util/FileStorageUtil_UT.groovy @@ -0,0 +1,31 @@ +package dev.abelab.smartpointer.util + +import dev.abelab.smartpointer.AbstractSpecification +import dev.abelab.smartpointer.domain.model.FileModel +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.property.GcpProperty +import org.springframework.beans.factory.annotation.Autowired + +/** + * FileStorageUtilの単体テスト + */ +class FileStorageUtil_UT extends AbstractSpecification { + + @Autowired + FileStorageUtil sut + + @Autowired + GcpProperty gcpProperty + + def "upload: GCP送信が抑制されている場合、アップロードされない"() { + given: + final fileModel = RandomHelper.mock(FileModel) + + when: + this.sut.upload(fileModel) + + then: + noExceptionThrown() + } + +} From 9b414942887cbdf8a73b1e37474ccdf6d4365da7 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Fri, 11 Nov 2022 17:41:16 +0900 Subject: [PATCH 113/189] fix position of overlay window --- .../main/src/view/window/pointerOverlay.ts | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 48ab9e1d..9ae47cc4 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -21,10 +21,7 @@ export const pointerOverlay = { throw new Error("Cannot show overlay window when not in CREATED state"); } - const { width, height } = screen.getPrimaryDisplay().workAreaSize; overlayWindow = new BrowserWindow({ - width, - height, title: "スマートポインター", show: false, frame: false, @@ -52,6 +49,8 @@ export const pointerOverlay = { await loadFile(overlayWindow, "overlay.html"); + pointerOverlay.setBoundsToDisplay(); + overlayWindow.show(); }, @@ -120,11 +119,23 @@ export const pointerOverlay = { return; } - const bounds = screen + const display = screen .getAllDisplays() - .find((display) => display.id === state.displayToShowPointer)!.workArea; + .find((display) => display.id === state.displayToShowPointer); + + if (display === undefined) { + throw new Error("Cannot find display to show pointer"); + } - overlayWindow.setBounds(bounds, false); + overlayWindow.setBounds( + { + x: display.bounds.x, + y: display.bounds.y, + width: display.size.width, + height: display.size.height, + }, + false + ); }, close: () => { From 835d1a08d528f14c414bab2fea132670081fe652 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 17:24:31 +0900 Subject: [PATCH 114/189] =?UTF-8?q?[feat]=20=E3=82=AB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=A0=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=BC=E3=83=AA?= =?UTF-8?q?=E3=82=B9=E3=83=88=E5=8F=96=E5=BE=97API=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/model/CustomPointerModel.java | 45 +++++++++++++++++ .../repository/CustomPointerRepository.java | 20 ++++++++ .../controller/CustomPointerController.java | 39 +++++++++++++++ .../api/type/CustomPointer.java | 39 +++++++++++++++ .../api/type/CustomPointers.java | 24 +++++++++ .../db/mapper/CustomPointerMapper.java | 6 +++ .../CustomPointerRepositoryImpl.java | 32 ++++++++++++ .../GetCustomPointersUseCase.java | 42 ++++++++++++++++ .../main/resources/graphql/schema.graphqls | 40 +++++++++++++++ .../CustomPointerRepositoryImpl_UT.groovy | 42 ++++++++++++++++ .../usecase/AbstractUseCase_UT.groovy | 4 ++ .../GetCustomPointersUseCase_UT.groovy | 50 +++++++++++++++++++ .../usecase/timer/StartTimerUseCase_UT.groovy | 1 + 13 files changed, 384 insertions(+) create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/model/CustomPointerModel.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointer.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointers.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/CustomPointerMapper.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/GetCustomPointersUseCase.java create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/GetCustomPointersUseCase_UT.groovy diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/CustomPointerModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/CustomPointerModel.java new file mode 100644 index 00000000..8393f3a3 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/CustomPointerModel.java @@ -0,0 +1,45 @@ +package dev.abelab.smartpointer.domain.model; + +import dev.abelab.smartpointer.infrastructure.db.entity.CustomPointer; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * カスタムポインターモデル + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CustomPointerModel { + + /** + * カスタムポインターID + */ + String id; + + /** + * ルームID + */ + String roomId; + + /** + * ラベル + */ + String label; + + /** + * URL + */ + String url; + + public CustomPointerModel(final CustomPointer customPointer) { + this.id = customPointer.getId(); + this.roomId = customPointer.getRoomId(); + this.label = customPointer.getLabel(); + this.url = customPointer.getUrl(); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java b/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java new file mode 100644 index 00000000..551969a0 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java @@ -0,0 +1,20 @@ +package dev.abelab.smartpointer.domain.repository; + +import java.util.List; + +import dev.abelab.smartpointer.domain.model.CustomPointerModel; + +/** + * カスタムポインターリポジトリ + */ +public interface CustomPointerRepository { + + /** + * ルームIDからカスタムポインターリストを取得 + * + * @param roomId ルームID + * @return カスタムポインターリスト + */ + List selectByRoomId(final String roomId); + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java new file mode 100644 index 00000000..8473d458 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java @@ -0,0 +1,39 @@ +package dev.abelab.smartpointer.infrastructure.api.controller; + +import java.util.stream.Collectors; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.stereotype.Controller; + +import dev.abelab.smartpointer.infrastructure.api.type.CustomPointer; +import dev.abelab.smartpointer.infrastructure.api.type.CustomPointers; +import dev.abelab.smartpointer.usecase.custom_pointer.GetCustomPointersUseCase; +import lombok.RequiredArgsConstructor; + +/** + * カスタムポインターコントローラ + */ +@Controller +@RequiredArgsConstructor +public class CustomPointerController { + + private final GetCustomPointersUseCase getCustomPointersUseCase; + + /** + * カスタムポインターリスト取得API + * + * @param roomId ルームID + * @return カスタムポインターリスト + */ + @QueryMapping + public CustomPointers getCustomPointers( // + @Argument final String roomId // + ) { + final var customPointers = this.getCustomPointersUseCase.handle(roomId).stream() // + .map(CustomPointer::new) // + .collect(Collectors.toList()); + return new CustomPointers(customPointers); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointer.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointer.java new file mode 100644 index 00000000..5212debe --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointer.java @@ -0,0 +1,39 @@ +package dev.abelab.smartpointer.infrastructure.api.type; + +import dev.abelab.smartpointer.domain.model.CustomPointerModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * カスタムポインター + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CustomPointer { + + /** + * カスタムポインターID + */ + String id; + + /** + * ラベル + */ + String label; + + /** + * URL + */ + String url; + + public CustomPointer(final CustomPointerModel customPointerModel) { + this.id = customPointerModel.getId(); + this.label = customPointerModel.getLabel(); + this.url = customPointerModel.getUrl(); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointers.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointers.java new file mode 100644 index 00000000..d1fc1c5e --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointers.java @@ -0,0 +1,24 @@ +package dev.abelab.smartpointer.infrastructure.api.type; + +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * カスタムポインターリスト + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CustomPointers { + + /** + * カスタムポインターリスト + */ + List customPointers; + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/CustomPointerMapper.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/CustomPointerMapper.java new file mode 100644 index 00000000..4f46dc1b --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/CustomPointerMapper.java @@ -0,0 +1,6 @@ +package dev.abelab.smartpointer.infrastructure.db.mapper; + +import dev.abelab.smartpointer.infrastructure.db.mapper.base.CustomPointerBaseMapper; + +public interface CustomPointerMapper extends CustomPointerBaseMapper { +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java new file mode 100644 index 00000000..a3de4bd3 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java @@ -0,0 +1,32 @@ +package dev.abelab.smartpointer.infrastructure.repository; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Repository; + +import dev.abelab.smartpointer.domain.model.CustomPointerModel; +import dev.abelab.smartpointer.domain.repository.CustomPointerRepository; +import dev.abelab.smartpointer.infrastructure.db.entity.CustomPointerExample; +import dev.abelab.smartpointer.infrastructure.db.mapper.CustomPointerMapper; +import lombok.RequiredArgsConstructor; + +/** + * カスタムポインターリポジトリ + */ +@RequiredArgsConstructor +@Repository +public class CustomPointerRepositoryImpl implements CustomPointerRepository { + + private final CustomPointerMapper customPointerMapper; + + @Override + public List selectByRoomId(final String roomId) { + final var example = new CustomPointerExample(); + example.createCriteria().andRoomIdEqualTo(roomId); + return this.customPointerMapper.selectByExample(example).stream() // + .map(CustomPointerModel::new) // + .collect(Collectors.toList()); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/GetCustomPointersUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/GetCustomPointersUseCase.java new file mode 100644 index 00000000..eefde47b --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/GetCustomPointersUseCase.java @@ -0,0 +1,42 @@ +package dev.abelab.smartpointer.usecase.custom_pointer; + +import java.util.List; + +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import dev.abelab.smartpointer.domain.model.CustomPointerModel; +import dev.abelab.smartpointer.domain.repository.CustomPointerRepository; +import dev.abelab.smartpointer.domain.repository.RoomRepository; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.NotFoundException; +import lombok.RequiredArgsConstructor; + +/** + * カスタムポインターリスト取得ユースケース + */ +@RequiredArgsConstructor +@Component +public class GetCustomPointersUseCase { + + private final RoomRepository roomRepository; + + private final CustomPointerRepository customPointerRepository; + + /** + * Handle UseCase + * + * @param roomId ルームID + * @return カスタムポインターリスト + */ + @Transactional + public List handle(final String roomId) { + // ルームの存在チェック + if (!this.roomRepository.existsById(roomId)) { + throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); + } + + return this.customPointerRepository.selectByRoomId(roomId); + } + +} diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 32771efc..8dfa2197 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -29,6 +29,16 @@ type Query { """ roomId: ID! ): Timer! + + """ + カスタムポインターリスト取得API + """ + getCustomPointers( + """ + ルームID + """ + roomId: ID! + ): CustomPointers! } type Mutation { @@ -300,6 +310,36 @@ type PointerControlOrientation { gamma: Float! } +""" +カスタムポインター +""" +type CustomPointer { + """ + カスタムポインターID + """ + id: ID! + + """ + ラベル + """ + label: String! + + """ + URL + """ + url: String! +} + +""" +カスタムポインターリスト +""" +type CustomPointers { + """ + カスタムポインターリスト + """ + customPointers: [CustomPointer!]! +} + """ タイマーステータス """ diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy new file mode 100644 index 00000000..f66ba17b --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy @@ -0,0 +1,42 @@ +package dev.abelab.smartpointer.infrastructure.repository + + +import dev.abelab.smartpointer.domain.repository.CustomPointerRepository +import dev.abelab.smartpointer.helper.TableHelper +import org.springframework.beans.factory.annotation.Autowired + +/** + * CustomPointerRepositoryImplの単体テスト + */ +class CustomPointerRepositoryImpl_UT extends AbstractRepository_UT { + + @Autowired + CustomPointerRepository sut + + def "selectByRoomId: ルームIDからカスタムポインターリストを取得"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + "00000000-0000-0000-0000-000000000001" | "000000" + } + TableHelper.insert sql, "custom_pointer", { + id | room_id | label | url + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "A" | "A url" + "00000000-0000-0000-0000-000000000001" | "00000000-0000-0000-0000-000000000000" | "B" | "B url" + "00000000-0000-0000-0000-000000000002" | "00000000-0000-0000-0000-000000000001" | "C" | "C url" + } + // @formatter:on + + when: + final result = this.sut.selectByRoomId("00000000-0000-0000-0000-000000000000") + + then: + result*.id == ["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000001"] + result*.roomId == ["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000"] + result*.label == ["A", "B"] + result*.url == ["A url", "B url"] + } + +} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy index a043f9fb..b09e5c6a 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy @@ -1,6 +1,7 @@ package dev.abelab.smartpointer.usecase import dev.abelab.smartpointer.AbstractSpecification +import dev.abelab.smartpointer.domain.repository.CustomPointerRepository import dev.abelab.smartpointer.domain.repository.RoomRepository import dev.abelab.smartpointer.domain.repository.TimerRepository import dev.abelab.smartpointer.domain.repository.UserRepository @@ -22,6 +23,9 @@ abstract class AbstractUseCase_UT extends AbstractSpecification { @SpringBean TimerRepository timerRepository = Mock() + @SpringBean + CustomPointerRepository customPointerRepository = Mock() + @SpringBean UserService userService = Mock() diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/GetCustomPointersUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/GetCustomPointersUseCase_UT.groovy new file mode 100644 index 00000000..19ca0d82 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/GetCustomPointersUseCase_UT.groovy @@ -0,0 +1,50 @@ +package dev.abelab.smartpointer.usecase.custom_pointer + +import dev.abelab.smartpointer.domain.model.CustomPointerModel +import dev.abelab.smartpointer.domain.model.RoomModel +import dev.abelab.smartpointer.exception.BaseException +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT +import org.springframework.beans.factory.annotation.Autowired + +/** + * GetCustomPointersUseCaseの単体テスト + */ +class GetCustomPointersUseCase_UT extends AbstractUseCase_UT { + + @Autowired + GetCustomPointersUseCase sut + + def "handle: カスタムポインターリストを取得"() { + given: + final room = RandomHelper.mock(RoomModel) + final customPointers = [ + RandomHelper.mock(CustomPointerModel), + RandomHelper.mock(CustomPointerModel), + ] + + when: + final result = this.sut.handle(room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.customPointerRepository.selectByRoomId(room.id) >> customPointers + result == customPointers + } + + def "handle: ルームが存在しない場合は404エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + + when: + this.sut.handle(room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> false + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + +} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy index 523e58cc..3c13d5e0 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/timer/StartTimerUseCase_UT.groovy @@ -30,6 +30,7 @@ class StartTimerUseCase_UT extends AbstractUseCase_UT { then: noExceptionThrown() 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.timerService.checkIsInputTimeValid(inputTime) >> {} 1 * this.timerRepository.selectByRoomId(room.id) >> Optional.of(timer) 1 * timer.start(inputTime) } From be2a9ba64643005dedd9faca2c5cfa07f6dc21f9 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 17:45:28 +0900 Subject: [PATCH 115/189] =?UTF-8?q?[test]=20=E3=82=AB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=A0=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=BC=E3=83=AA?= =?UTF-8?q?=E3=82=B9=E3=83=88=E5=8F=96=E5=BE=97API=E3=81=AE=E7=B5=B1?= =?UTF-8?q?=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomPointerController_IT.groovy | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy new file mode 100644 index 00000000..1439f6e2 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy @@ -0,0 +1,74 @@ +package dev.abelab.smartpointer.infrastructure.api.controller + + +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.TableHelper +import dev.abelab.smartpointer.infrastructure.api.type.CustomPointers + +/** + * CustomPointerControllerの統合テスト + */ +class CustomPointerController_IT extends AbstractController_IT { + + def "カスタムポインターリスト取得API: 正常系 ユーザリストを取得する"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + "00000000-0000-0000-0000-000000000001" | "000000" + "00000000-0000-0000-0000-000000000002" | "000000" + } + TableHelper.insert sql, "custom_pointer", { + id | room_id | label | url + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "A" | "A url" + "00000000-0000-0000-0000-000000000001" | "00000000-0000-0000-0000-000000000000" | "B" | "B url" + "00000000-0000-0000-0000-000000000002" | "00000000-0000-0000-0000-000000000001" | "C" | "C url" + } + // @formatter:on + + when: + final query = + """ + query { + getCustomPointers(roomId: "${inputRoomId}") { + customPointers { + id + label + url + } + } + } + """ + final response = this.executeHttp(query, "getCustomPointers", CustomPointers) + + then: + response.customPointers*.label == expectedLabels + response.customPointers*.url == expectedUrls + + where: + inputRoomId || expectedLabels | expectedUrls + "00000000-0000-0000-0000-000000000000" || ["A", "B"] | ["A url", "B url"] + "00000000-0000-0000-0000-000000000001" || ["C"] | ["C url",] + "00000000-0000-0000-0000-000000000002" || [] | [] + } + + def "カスタムポインターリスト取得API: 異常系 ルームが存在しない場合は404エラー"() { + expect: + final query = + """ + query { + getCustomPointers(roomId: "") { + customPointers { + id + label + url + } + } + } + """ + this.executeHttp(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + +} From 53e6b318d38a979319c599fce920abfb8e5f3446 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Fri, 11 Nov 2022 17:47:18 +0900 Subject: [PATCH 116/189] fix graphql config --- .../pointer/{codegen.ts => graphql.config.ts} | 3 +- app/src/main/pointer/package.json | 6 ++-- app/src/main/pointer/src/api.ts | 28 +++++++++++++------ .../pointer/src/components/JoinRoomForm.tsx | 7 ++--- app/src/main/pointer/src/gql/graphql.ts | 16 ++++++----- desktop/{codegen.ts => graphql.config.ts} | 3 +- desktop/packages/main/package.json | 2 +- desktop/packages/main/src/api.ts | 26 ++++++++++------- desktop/packages/main/src/controller/index.ts | 4 +-- desktop/packages/main/src/gql/graphql.ts | 9 ++---- 10 files changed, 61 insertions(+), 43 deletions(-) rename app/src/main/pointer/{codegen.ts => graphql.config.ts} (74%) rename desktop/{codegen.ts => graphql.config.ts} (72%) diff --git a/app/src/main/pointer/codegen.ts b/app/src/main/pointer/graphql.config.ts similarity index 74% rename from app/src/main/pointer/codegen.ts rename to app/src/main/pointer/graphql.config.ts index b867a06d..f3d40516 100644 --- a/app/src/main/pointer/codegen.ts +++ b/app/src/main/pointer/graphql.config.ts @@ -1,8 +1,9 @@ import { CodegenConfig } from "@graphql-codegen/cli"; +import { join } from "path"; const config: CodegenConfig = { overwrite: true, - schema: "../resources/graphql/schema.graphqls", + schema: join(__dirname, "../resources/graphql/schema.graphqls"), documents: ["src/**/*.ts{,x}"], ignoreNoDocuments: true, generates: { diff --git a/app/src/main/pointer/package.json b/app/src/main/pointer/package.json index 1f21985f..1e913da6 100644 --- a/app/src/main/pointer/package.json +++ b/app/src/main/pointer/package.json @@ -3,10 +3,12 @@ "version": "1.1.0-SNAPSHOT", "private": true, "scripts": { - "dev": "vite --host", + "dev:serve": "vite --host", + "dev": "run-p dev:* codegen", "build": "tsc && vite build", "preview": "vite preview", - "codegen": "gql-gen --config codegen.ts", + "codegen": "gql-gen --config graphql.config.ts", + "codegen:watch": "npm run codegen -- --watch", "lint": "eslint src", "format": "npm run check:format --write", "test": "vitest", diff --git a/app/src/main/pointer/src/api.ts b/app/src/main/pointer/src/api.ts index f5c96cb3..5f43b889 100644 --- a/app/src/main/pointer/src/api.ts +++ b/app/src/main/pointer/src/api.ts @@ -2,13 +2,13 @@ import type { TypedDocumentNode } from "@graphql-typed-document-node/core"; import { ExecutionResult, print } from "graphql"; import { GraphQLClient } from "graphql-request"; import { RemoveIndex, RequestOptions } from "graphql-request/dist/types"; -import { createClient, Sink } from "graphql-ws"; +import { Client, createClient, Sink } from "graphql-ws"; const graphqlHttpEndpoint = `${location.origin}/graphql`; const graphqlHttpClient = new GraphQLClient(graphqlHttpEndpoint); -export const request = < +export const requestHttp = < T = unknown, V extends Record = Record >({ @@ -29,12 +29,20 @@ export const request = < const graphqlWsEndpoint = `wss://${location.host}/graphql-ws`; -const rawGraphqlWsClient = createClient({ - url: graphqlWsEndpoint, - lazy: true, -}); +let graphqlWsClient: Client | null = null; -export const subscribe = < +export const initializeWsClient = (accessToken: string) => { + graphqlWsClient = createClient({ + url: graphqlWsEndpoint, + connectionParams: { + headers: { + Authorization: `Bearer ${accessToken}`, + }, + }, + }); +}; + +export const requestWs = < T = unknown, V extends Record = Record >( @@ -50,7 +58,11 @@ export const subscribe = < : { variables: V }), sink: Sink> ) => { - rawGraphqlWsClient.subscribe( + if (!graphqlWsClient) { + throw new Error("graphql-ws client not initialized"); + } + + graphqlWsClient.subscribe( { query: print(query), variables, diff --git a/app/src/main/pointer/src/components/JoinRoomForm.tsx b/app/src/main/pointer/src/components/JoinRoomForm.tsx index fc691e2a..58e088b4 100644 --- a/app/src/main/pointer/src/components/JoinRoomForm.tsx +++ b/app/src/main/pointer/src/components/JoinRoomForm.tsx @@ -15,9 +15,8 @@ import { ClientError } from "graphql-request"; import { FC } from "react"; import { Controller, useForm } from "react-hook-form"; -import { request } from "@/api"; +import { initializeWsClient, requestHttp } from "@/api"; import { graphql } from "@/gql"; -import { activate } from "@/stomp"; import { AuthData } from "@/types/AuthData"; type Props = { @@ -52,7 +51,7 @@ export const JoinRoomForm: FC = ({ onSubmit: onSubmitProps }) => { const onSubmit = async (values: FormValues) => { try { - const data = await request({ + const data = await requestHttp({ query: graphql(` mutation JoinRoom( $roomId: ID! @@ -73,7 +72,7 @@ export const JoinRoomForm: FC = ({ onSubmit: onSubmitProps }) => { variables: values, }); - await activate(); + initializeWsClient(data.joinRoom.accessToken); localStorage.setItem(localStorageKey, values.userName); onSubmitProps({ diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index 880c86f8..f4cdf9e7 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -32,7 +32,7 @@ export type Mutation = { /** ルーム削除API */ deleteRoom: Scalars['ID']; /** ポインター切断API */ - disconnectPointer: PointerControl; + disconnectPointer: User; /** スライドを進めるAPI */ goNextSlide: SlideControl; /** スライドを戻すAPI */ @@ -41,14 +41,14 @@ export type Mutation = { joinRoom: AccessToken; /** ポインター操作API */ movePointer: PointerControl; + /** タイマー一時停止API */ + pauseTimer: Timer; /** タイマーリセットAPI */ resetTimer: Timer; /** タイマー再開API */ resumeTimer: Timer; /** タイマー開始API */ startTimer: Timer; - /** タイマー停止API */ - stopTimer: Timer; }; @@ -64,13 +64,15 @@ export type MutationJoinRoomArgs = { }; -export type MutationStartTimerArgs = { - inputTime: Scalars['Int']; +export type MutationMovePointerArgs = { + alpha?: InputMaybe; + beta?: InputMaybe; + gamma?: InputMaybe; }; -export type MutationStopTimerArgs = { - remainingTimeAtPaused: Scalars['Int']; +export type MutationStartTimerArgs = { + inputTime: Scalars['Int']; }; /** ポインター操作 */ diff --git a/desktop/codegen.ts b/desktop/graphql.config.ts similarity index 72% rename from desktop/codegen.ts rename to desktop/graphql.config.ts index 8ee339c0..eea20fd2 100644 --- a/desktop/codegen.ts +++ b/desktop/graphql.config.ts @@ -1,8 +1,9 @@ import { CodegenConfig } from "@graphql-codegen/cli"; +import { join } from "path"; const config: CodegenConfig = { overwrite: true, - schema: "../app/src/main/resources/graphql/schema.graphqls", + schema: join(__dirname, "../app/src/main/resources/graphql/schema.graphqls"), documents: ["src/**/*.ts{,x}"], ignoreNoDocuments: true, generates: { diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json index e1b4dca8..fd7f55b6 100644 --- a/desktop/packages/main/package.json +++ b/desktop/packages/main/package.json @@ -4,7 +4,7 @@ "description": "", "scripts": { "build": "vite build", - "codegen": "gql-gen --config codegen.ts" + "codegen": "gql-gen --config ../../graphql.config.ts" }, "keywords": [], "author": "", diff --git a/desktop/packages/main/src/api.ts b/desktop/packages/main/src/api.ts index 67fbbf42..b9b8d45f 100644 --- a/desktop/packages/main/src/api.ts +++ b/desktop/packages/main/src/api.ts @@ -2,7 +2,7 @@ import type { TypedDocumentNode } from "@graphql-typed-document-node/core"; import { ExecutionResult, print } from "graphql"; import { GraphQLClient } from "graphql-request"; import { RemoveIndex, RequestOptions } from "graphql-request/dist/types"; -import { createClient, Sink } from "graphql-ws"; +import { createClient, Sink, Client } from "graphql-ws"; import { WebSocket } from "ws"; const httpOrigin = @@ -14,7 +14,7 @@ const graphqlHttpEndpoint = `${httpOrigin}/graphql`; const graphqlHttpClient = new GraphQLClient(graphqlHttpEndpoint); -export const request = < +export const requestHttp = < T = unknown, V extends Record = Record >({ @@ -32,7 +32,6 @@ export const request = < variables: variables, } as RequestOptions); }; - const wsOrigin = process.env["USE_DEV_BACKEND"] === "true" ? "ws://localhost:8080" @@ -40,13 +39,16 @@ const wsOrigin = const graphqlWsEndpoint = `${wsOrigin}/graphql-ws`; -const rawGraphqlWsClient = createClient({ - url: graphqlWsEndpoint, - lazy: true, - webSocketImpl: WebSocket, -}); +let graphqlWsClient: Client | null = null; + +export const initializeWsClient = () => { + graphqlWsClient = createClient({ + url: graphqlWsEndpoint, + webSocketImpl: WebSocket, + }); +}; -export const subscribe = < +export const requestWs = < T = unknown, V extends Record = Record >( @@ -62,7 +64,11 @@ export const subscribe = < : { variables: V }), sink: Sink> ) => { - rawGraphqlWsClient.subscribe( + if (!graphqlWsClient) { + throw new Error("graphql-ws client not initialized"); + } + + graphqlWsClient.subscribe( { query: print(query), variables, diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index b1faaed4..11a254ae 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -7,7 +7,7 @@ import { import { randomUUID } from "crypto"; import { screen } from "electron"; -import { request } from "@/api"; +import { requestHttp } from "@/api"; import { graphql } from "@/gql"; import { model } from "@/model"; import { @@ -58,7 +58,7 @@ export const controller = { createRoom: async () => { model.startCreatingRoom(); - const data = await request({ + const data = await requestHttp({ query: graphql(` mutation CreateRoom { createRoom { diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index f7abe354..c835f34d 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -41,14 +41,14 @@ export type Mutation = { joinRoom: AccessToken; /** ポインター操作API */ movePointer: PointerControl; + /** タイマー一時停止API */ + pauseTimer: Timer; /** タイマーリセットAPI */ resetTimer: Timer; /** タイマー再開API */ resumeTimer: Timer; /** タイマー開始API */ startTimer: Timer; - /** タイマー停止API */ - stopTimer: Timer; }; @@ -68,11 +68,6 @@ export type MutationStartTimerArgs = { inputTime: Scalars['Int']; }; - -export type MutationStopTimerArgs = { - remainingTimeAtPaused: Scalars['Int']; -}; - /** ポインター操作 */ export type PointerControl = { __typename?: 'PointerControl'; From 861cceb4a4840c630bc147623a813c31f88c6417 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Fri, 11 Nov 2022 19:11:54 +0900 Subject: [PATCH 117/189] =?UTF-8?q?change:=20clipboard=20icon=20=E3=82=92?= =?UTF-8?q?=E3=81=88=E3=81=88=E6=84=9F=E3=81=98=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../renderer/src/link/InviteLink/Clipboard.tsx | 13 ++++++++++--- .../src/link/InviteLink/ClipboardIcon.tsx | 18 ------------------ 2 files changed, 10 insertions(+), 21 deletions(-) delete mode 100644 desktop/packages/renderer/src/link/InviteLink/ClipboardIcon.tsx diff --git a/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx b/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx index d7445f85..e61c8088 100644 --- a/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx +++ b/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx @@ -1,16 +1,17 @@ import { Button, Flex, + Icon, Input, InputGroup, InputRightElement, Text, useClipboard, } from "@chakra-ui/react"; +import { ClipboardIcon as ClipboardIconOutline } from "@heroicons/react/24/outline"; +import { ClipboardIcon as ClipboardIconSolid } from "@heroicons/react/24/solid"; import type { FC } from "react"; -import { ClipboardIcon } from "./ClipboardIcon"; - type Props = { title: string; text: string; @@ -30,8 +31,14 @@ export const Clipboard: FC = ({ title, text }) => { { stroke="gray.600" boxSize="8" > - + )} - + no image @@ -124,6 +121,18 @@ export const CustomPointerTypeTabItem: FC<{ From 0067708cd733dcb429c12bcf67546fc4417c72c6 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 19:47:12 +0900 Subject: [PATCH 120/189] =?UTF-8?q?[feat]=20=E3=82=AB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=A0=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=BC=E5=89=8A?= =?UTF-8?q?=E9=99=A4API=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 17 +++-- .../repository/CustomPointerRepository.java | 17 +++++ .../smartpointer/exception/ErrorCode.java | 2 + ...ocketGraphQLAuthenticationInterceptor.java | 6 +- .../controller/CustomPointerController.java | 30 +++++++++ .../CustomPointerRepositoryImpl.java | 14 ++++ .../DeleteCustomPointersUseCase.java | 43 +++++++++++++ .../main/resources/graphql/schema.graphqls | 15 +++++ app/src/main/resources/i18n/messages.yml | 1 + .../CustomPointerRepositoryImpl_UT.groovy | 50 +++++++++++++++ .../DeleteCustomPointersUseCase_UT.groovy | 64 +++++++++++++++++++ 11 files changed, 254 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/DeleteCustomPointersUseCase.java create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/DeleteCustomPointersUseCase_UT.groovy diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java index 73e4f98e..08fcb610 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -1,12 +1,11 @@ package dev.abelab.smartpointer.config; +import java.util.List; + import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import dev.abelab.smartpointer.domain.model.PointerControlModel; -import dev.abelab.smartpointer.domain.model.SlideControlModel; -import dev.abelab.smartpointer.domain.model.TimerModel; -import dev.abelab.smartpointer.domain.model.UserModel; +import dev.abelab.smartpointer.domain.model.*; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; import reactor.util.concurrent.Queues; @@ -57,4 +56,14 @@ public Flux pointerDisconnectFlux(final Sinks.Many pointer return pointerDisconnectSink.asFlux(); } + @Bean + public Sinks.Many> customPointersSink() { + return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); + } + + @Bean + public Flux> customPointersFlux(final Sinks.Many> customPointersSink) { + return customPointersSink.asFlux(); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java b/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java index 551969a0..741c5672 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java @@ -17,4 +17,21 @@ public interface CustomPointerRepository { */ List selectByRoomId(final String roomId); + /** + * ID、ルームIDからカスタムポインターの存在チェック + * + * @param id カスタムポインターID + * @param roomId ルームID + * @return チェック結果 + */ + boolean existsByIdAndRoomId(final String id, final String roomId); + + /** + * ID、ルームIDからカスタムポインターを削除 + * + * @param id カスタムポインターID + * @param roomId ルームID + */ + void deleteByIdAndRoomId(final String id, final String roomId); + } diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java index 877ef980..8e9cda59 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java @@ -50,6 +50,8 @@ public enum ErrorCode { NOT_FOUND_TIMER(4002, "exception.not_found.timer"), + NOT_FOUND_CUSTOM_POINTER(4003, "exception.not_found.custom_pointer"), + /** * 409 Conflict: 5000~5999 */ diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java index e64c7f13..306e4bb2 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java @@ -27,7 +27,11 @@ public class WebSocketGraphQLAuthenticationInterceptor implements WebSocketGraph @Override public Mono intercept(final WebGraphQlRequest request, final Chain chain) { - log.info(request.getDocument()); + if (request.getVariables().isEmpty()) { + log.info(String.format("%s", request.getOperationName())); + } else { + log.info(String.format("%s %s", request.getOperationName(), request.getVariables())); + } return WebSocketGraphQlInterceptor.super.intercept(request, chain); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java index 8473d458..cdcb6923 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java @@ -1,15 +1,21 @@ package dev.abelab.smartpointer.infrastructure.api.controller; +import java.util.List; import java.util.stream.Collectors; import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.graphql.data.method.annotation.QueryMapping; import org.springframework.stereotype.Controller; +import dev.abelab.smartpointer.domain.model.CustomPointerModel; import dev.abelab.smartpointer.infrastructure.api.type.CustomPointer; import dev.abelab.smartpointer.infrastructure.api.type.CustomPointers; +import dev.abelab.smartpointer.usecase.custom_pointer.DeleteCustomPointersUseCase; import dev.abelab.smartpointer.usecase.custom_pointer.GetCustomPointersUseCase; import lombok.RequiredArgsConstructor; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Sinks; /** * カスタムポインターコントローラ @@ -18,8 +24,14 @@ @RequiredArgsConstructor public class CustomPointerController { + private final Sinks.Many> customPointersSink; + + private final Flux> customPointersFlux; + private final GetCustomPointersUseCase getCustomPointersUseCase; + private final DeleteCustomPointersUseCase deleteCustomPointersUseCase; + /** * カスタムポインターリスト取得API * @@ -36,4 +48,22 @@ public CustomPointers getCustomPointers( // return new CustomPointers(customPointers); } + /** + * カスタムポインター削除API + * + * @param id カスタムポインターID + * @param roomId ルームID + * @return カスタムポインターID + */ + @MutationMapping + public String deleteCustomPointer( // + @Argument final String id, // + @Argument final String roomId // + ) { + this.deleteCustomPointersUseCase.handle(id, roomId); + this.customPointersSink.tryEmitNext(this.getCustomPointersUseCase.handle(roomId)); + + return id; + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java index a3de4bd3..2bd9de0a 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java @@ -29,4 +29,18 @@ public List selectByRoomId(final String roomId) { .collect(Collectors.toList()); } + @Override + public boolean existsByIdAndRoomId(final String id, final String roomId) { + final var example = new CustomPointerExample(); + example.createCriteria().andIdEqualTo(id).andRoomIdEqualTo(roomId); + return this.customPointerMapper.countByExample(example) != 0; + } + + @Override + public void deleteByIdAndRoomId(final String id, final String roomId) { + final var example = new CustomPointerExample(); + example.createCriteria().andIdEqualTo(id).andRoomIdEqualTo(roomId); + this.customPointerMapper.deleteByExample(example); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/DeleteCustomPointersUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/DeleteCustomPointersUseCase.java new file mode 100644 index 00000000..dd1ab408 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/DeleteCustomPointersUseCase.java @@ -0,0 +1,43 @@ +package dev.abelab.smartpointer.usecase.custom_pointer; + +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import dev.abelab.smartpointer.domain.repository.CustomPointerRepository; +import dev.abelab.smartpointer.domain.repository.RoomRepository; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.NotFoundException; +import lombok.RequiredArgsConstructor; + +/** + * カスタムポインター削除ユースケース + */ +@RequiredArgsConstructor +@Component +public class DeleteCustomPointersUseCase { + + private final RoomRepository roomRepository; + + private final CustomPointerRepository customPointerRepository; + + /** + * Handle UseCase + * + * @param id カスタムポインターID + * @param roomId ルームID + */ + @Transactional + public void handle(final String id, final String roomId) { + // ルームの存在チェック + if (!this.roomRepository.existsById(roomId)) { + throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); + } + + // カスタムポインターの存在チェック & 削除 + if (!this.customPointerRepository.existsByIdAndRoomId(id, roomId)) { + throw new NotFoundException(ErrorCode.NOT_FOUND_CUSTOM_POINTER); + } + this.customPointerRepository.deleteByIdAndRoomId(id, roomId); + } + +} diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 8dfa2197..7ebc89ee 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -136,6 +136,21 @@ type Mutation { ポインター切断API """ disconnectPointer: User! + + """ + カスタムポインター削除API + """ + deleteCustomPointer( + """ + カスタムポインターID + """ + id: ID! + + """ + ルームID + """ + roomId: ID! + ): ID! } type Subscription { diff --git a/app/src/main/resources/i18n/messages.yml b/app/src/main/resources/i18n/messages.yml index 96df578e..14f35628 100644 --- a/app/src/main/resources/i18n/messages.yml +++ b/app/src/main/resources/i18n/messages.yml @@ -17,6 +17,7 @@ exception: api: APIが見つかりません。 room: ルームが見つかりません。 timer: タイマーが見つかりません。 + custom_pointer: カスタムポインターが見つかりません。 conflict: user_name_is_already_exists: そのユーザ名は既に使われています。 internal_server_error: diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy index f66ba17b..a49446d5 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy @@ -39,4 +39,54 @@ class CustomPointerRepositoryImpl_UT extends AbstractRepository_UT { result*.url == ["A url", "B url"] } + def "existsByIdAndRoomId: ID、ルームIDからカスタムポインターの存在チェック"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + } + TableHelper.insert sql, "custom_pointer", { + id | room_id | label | url + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "" | "" + } + // @formatter:on + + when: + final result = this.sut.existsByIdAndRoomId(inputId, inputRoomId) + + then: + result == expectedResult + + where: + inputId | inputRoomId || expectedResult + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" || true + "00000000-0000-0000-0000-000000000001" | "00000000-0000-0000-0000-000000000000" || false + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000001" || false + } + + def "deleteByIdAndRoomId: ID、ルームIDからカスタムポインターを削除"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + "00000000-0000-0000-0000-000000000001" | "000000" + } + TableHelper.insert sql, "custom_pointer", { + id | room_id | label | url + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "" | "" + "00000000-0000-0000-0000-000000000001" | "00000000-0000-0000-0000-000000000000" | "" | "" + "00000000-0000-0000-0000-000000000002" | "00000000-0000-0000-0000-000000000001" | "" | "" + } + // @formatter:on + + when: + this.sut.deleteByIdAndRoomId("00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000") + + then: + final customPointers = sql.rows("SELECT * FROM custom_pointer") + customPointers*.id == ["00000000-0000-0000-0000-000000000001", "00000000-0000-0000-0000-000000000002"] + } + } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/DeleteCustomPointersUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/DeleteCustomPointersUseCase_UT.groovy new file mode 100644 index 00000000..5f4228a3 --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/DeleteCustomPointersUseCase_UT.groovy @@ -0,0 +1,64 @@ +package dev.abelab.smartpointer.usecase.custom_pointer + +import dev.abelab.smartpointer.domain.model.CustomPointerModel +import dev.abelab.smartpointer.domain.model.RoomModel +import dev.abelab.smartpointer.exception.BaseException +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT +import org.springframework.beans.factory.annotation.Autowired + +/** + * DeleteCustomPointersUseCaseの単体テスト + */ +class DeleteCustomPointersUseCase_UT extends AbstractUseCase_UT { + + @Autowired + DeleteCustomPointersUseCase sut + + def "handle: カスタムポインターを削除"() { + given: + final room = RandomHelper.mock(RoomModel) + final customPointer = RandomHelper.mock(CustomPointerModel) + + when: + this.sut.handle(customPointer.id, room.id) + + then: + noExceptionThrown() + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.customPointerRepository.existsByIdAndRoomId(customPointer.id, room.id) >> true + 1 * this.customPointerRepository.deleteByIdAndRoomId(customPointer.id, room.id) + } + + def "handle: ルームが存在しない場合は404エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + final customPointer = RandomHelper.mock(CustomPointerModel) + + when: + this.sut.handle(customPointer.id, room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> false + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + + def "handle: カスタムポインターが存在しない場合は404エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + final customPointer = RandomHelper.mock(CustomPointerModel) + + when: + this.sut.handle(customPointer.id, room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.customPointerRepository.existsByIdAndRoomId(customPointer.id, room.id) >> false + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_CUSTOM_POINTER)) + } + +} From 515c5fa0245afa468d918d10c027bd262a04f0d4 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 19:56:34 +0900 Subject: [PATCH 121/189] =?UTF-8?q?[test]=20=E3=82=AB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=A0=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=BC=E5=89=8A?= =?UTF-8?q?=E9=99=A4API=E3=81=AE=E7=B5=B1=E5=90=88=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomPointerController_IT.groovy | 79 ++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy index 1439f6e2..042a7204 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy @@ -1,16 +1,26 @@ package dev.abelab.smartpointer.infrastructure.api.controller - +import dev.abelab.smartpointer.domain.model.CustomPointerModel import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.TableHelper import dev.abelab.smartpointer.infrastructure.api.type.CustomPointers +import org.springframework.beans.factory.annotation.Autowired +import reactor.core.publisher.Flux +import reactor.core.publisher.Sinks +import reactor.test.StepVerifier /** * CustomPointerControllerの統合テスト */ class CustomPointerController_IT extends AbstractController_IT { + @Autowired + Sinks.Many> customPointersSink + + @Autowired + Flux> customPointersFlux + def "カスタムポインターリスト取得API: 正常系 ユーザリストを取得する"() { given: // @formatter:off @@ -71,4 +81,71 @@ class CustomPointerController_IT extends AbstractController_IT { this.executeHttp(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) } + def "カスタムポインター削除API: 正常系 カスタムポインターを削除する"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + "00000000-0000-0000-0000-000000000001" | "000000" + } + TableHelper.insert sql, "custom_pointer", { + id | room_id | label | url + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "" | "" + "00000000-0000-0000-0000-000000000001" | "00000000-0000-0000-0000-000000000000" | "" | "" + "00000000-0000-0000-0000-000000000002" | "00000000-0000-0000-0000-000000000001" | "" | "" + } + // @formatter:on + + when: + final query = + """ + mutation { + deleteCustomPointer(id: "00000000-0000-0000-0000-000000000000", roomId: "00000000-0000-0000-0000-000000000000") + } + """ + final response = this.executeHttp(query, "deleteCustomPointer", String) + + then: + response == "00000000-0000-0000-0000-000000000000" + + final customPointers = sql.rows("SELECT * FROM custom_pointer") + customPointers*.id == ["00000000-0000-0000-0000-000000000001", "00000000-0000-0000-0000-000000000002"] + + StepVerifier.create(this.customPointersFlux) + .expectNextMatches({ + it*.id == ["00000000-0000-0000-0000-000000000001"] + }) + .thenCancel() + .verify() + } + + def "カスタムポインター削除API: 異常系 ルームもしくはカスタムポインターが存在しない場合は404エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + } + TableHelper.insert sql, "custom_pointer", { + id | room_id | label | url + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "" | "" + } + // @formatter:on + + expect: + final query = + """ + mutation { + deleteCustomPointer(id: "${inputId}", roomId: "${inputRoomId}") + } + """ + this.executeHttp(query, new NotFoundException(expectedErrorCode)) + + where: + inputId | inputRoomId || expectedErrorCode + "00000000-0000-0000-0000-000000000001" | "00000000-0000-0000-0000-000000000000" || ErrorCode.NOT_FOUND_CUSTOM_POINTER + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000001" || ErrorCode.NOT_FOUND_ROOM + } + } From 9703cfe39a117acd07bb264c02c333e5826eda14 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Fri, 11 Nov 2022 20:01:35 +0900 Subject: [PATCH 122/189] =?UTF-8?q?remove:=20desktop=20>=20axios,OpenAPI,s?= =?UTF-8?q?tomp=20=E3=82=92=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82=E3=81=8B?= =?UTF-8?q?=E3=82=89=E5=89=8A=E9=99=A4=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/package-lock.json | 799 +----------------- desktop/package.json | 2 - desktop/packages/main/openapitools.json | 7 - desktop/packages/main/package.json | 1 - desktop/packages/main/src/controller/index.ts | 21 +- desktop/packages/main/src/stomp.ts | 216 ++--- 6 files changed, 125 insertions(+), 921 deletions(-) delete mode 100644 desktop/packages/main/openapitools.json diff --git a/desktop/package-lock.json b/desktop/package-lock.json index c1dcf6f9..77022ff4 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -13,8 +13,6 @@ ], "dependencies": { "@nut-tree/nut-js": "2.3.0", - "@stomp/stompjs": "6.1.2", - "axios": "1.1.3", "electron-store": "8.1.0", "graphql": "16.6.0", "graphql-request": "5.0.0", @@ -4239,118 +4237,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@nestjs/common": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", - "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", - "dev": true, - "dependencies": { - "axios": "0.26.1", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "cache-manager": "*", - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "cache-manager": { - "optional": true - }, - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/common/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/@nestjs/common/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/@nestjs/common/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@nestjs/core": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", - "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "3.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0", - "@nestjs/websockets": "^8.0.0", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } - } - }, - "node_modules/@nestjs/core/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/@nestjs/core/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4500,128 +4386,6 @@ "node-abort-controller": "2.0.0" } }, - "node_modules/@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/@openapitools/openapi-generator-cli": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", - "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@nestjs/common": "8.4.4", - "@nestjs/core": "8.4.4", - "@nuxtjs/opencollective": "0.3.2", - "chalk": "4.1.2", - "commander": "8.3.0", - "compare-versions": "4.1.3", - "concurrently": "6.5.1", - "console.table": "0.10.0", - "fs-extra": "10.0.1", - "glob": "7.1.6", - "inquirer": "8.2.2", - "lodash": "4.17.21", - "reflect-metadata": "0.1.13", - "rxjs": "7.5.5", - "tslib": "2.0.3" - }, - "bin": { - "openapi-generator-cli": "main.js" - }, - "engines": { - "node": ">=10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/openapi_generator" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "dev": true - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/@peculiar/asn1-schema": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.3.tgz", @@ -4786,11 +4550,6 @@ "resolved": "packages/tsconfig", "link": true }, - "node_modules/@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" - }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -5963,16 +5722,6 @@ "node": ">=4" } }, - "node_modules/axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -7024,12 +6773,6 @@ "node": ">=0.10.0" } }, - "node_modules/compare-versions": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", - "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", - "dev": true - }, "node_modules/compute-scroll-into-view": { "version": "1.0.14", "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", @@ -7040,99 +6783,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/concurrently": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", - "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" - }, - "bin": { - "concurrently": "bin/concurrently.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/concurrently/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/concurrently/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/concurrently/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/concurrently/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/conf": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", @@ -7201,24 +6851,6 @@ "proto-list": "~1.2.1" } }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "node_modules/console.table": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", - "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", - "dev": true, - "dependencies": { - "easy-table": "1.1.0" - }, - "engines": { - "node": "> 0.10" - } - }, "node_modules/constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", @@ -7416,19 +7048,6 @@ "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", "dev": true }, - "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "dev": true, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -7856,15 +7475,6 @@ "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", "dev": true }, - "node_modules/easy-table": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", - "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", - "dev": true, - "optionalDependencies": { - "wcwidth": ">=1.0.1" - } - }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -9286,12 +8896,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -9492,25 +9096,6 @@ "node": ">=10" } }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -9523,6 +9108,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -10953,15 +10539,6 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -12170,15 +11747,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -12598,12 +12166,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", - "dev": true - }, "node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -12938,11 +12500,6 @@ "dev": true, "optional": true }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -13369,12 +12926,6 @@ "node": ">=8.10.0" } }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, "node_modules/regenerator-runtime": { "version": "0.13.10", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", @@ -13928,12 +13479,6 @@ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -14430,15 +13975,6 @@ "node": "*" } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -15337,7 +14873,6 @@ "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", "@graphql-typed-document-node/core": "3.1.1", - "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", "@types/ws": "8.5.3" @@ -18608,70 +18143,6 @@ "tslib": "^2.3.1" } }, - "@nestjs/common": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", - "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", - "dev": true, - "requires": { - "axios": "0.26.1", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "dependencies": { - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.8" - } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } - } - }, - "@nestjs/core": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", - "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", - "dev": true, - "requires": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "3.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "dependencies": { - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } - } - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -18770,95 +18241,6 @@ "node-abort-controller": "2.0.0" } }, - "@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - } - }, - "@openapitools/openapi-generator-cli": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", - "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", - "dev": true, - "requires": { - "@nestjs/common": "8.4.4", - "@nestjs/core": "8.4.4", - "@nuxtjs/opencollective": "0.3.2", - "chalk": "4.1.2", - "commander": "8.3.0", - "compare-versions": "4.1.3", - "concurrently": "6.5.1", - "console.table": "0.10.0", - "fs-extra": "10.0.1", - "glob": "7.1.6", - "inquirer": "8.2.2", - "lodash": "4.17.21", - "reflect-metadata": "0.1.13", - "rxjs": "7.5.5", - "tslib": "2.0.3" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "dev": true - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, "@peculiar/asn1-schema": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.3.tgz", @@ -18989,7 +18371,6 @@ "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", "@graphql-typed-document-node/core": "3.1.1", - "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", "@smartpointer-desktop/shared": "1.1.0-SNAPSHOT", "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", @@ -19043,11 +18424,6 @@ "@typescript-eslint/parser": "5.41.0" } }, - "@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" - }, "@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -19938,16 +19314,6 @@ "integrity": "sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==", "dev": true }, - "axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -20776,12 +20142,6 @@ "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true }, - "compare-versions": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", - "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", - "dev": true - }, "compute-scroll-into-view": { "version": "1.0.14", "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", @@ -20792,80 +20152,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "concurrently": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", - "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" - }, - "dependencies": { - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, "conf": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", @@ -20920,21 +20206,6 @@ "proto-list": "~1.2.1" } }, - "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "console.table": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", - "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", - "dev": true, - "requires": { - "easy-table": "1.1.0" - } - }, "constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", @@ -21093,12 +20364,6 @@ "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", "dev": true }, - "date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "dev": true - }, "debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -21437,15 +20702,6 @@ "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", "dev": true }, - "easy-table": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", - "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", - "dev": true, - "requires": { - "wcwidth": ">=1.0.1" - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -22450,12 +21706,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -22624,11 +21874,6 @@ "tslib": "^2.0.3" } }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -22638,6 +21883,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -23699,12 +22945,6 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, - "iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "dev": true - }, "jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -24657,12 +23897,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true - }, "object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -24974,12 +24208,6 @@ "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", "dev": true }, - "path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", - "dev": true - }, "path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -25233,11 +24461,6 @@ "dev": true, "optional": true }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -25537,12 +24760,6 @@ "picomatch": "^2.2.1" } }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, "regenerator-runtime": { "version": "0.13.10", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", @@ -25964,12 +25181,6 @@ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -26368,12 +25579,6 @@ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", diff --git a/desktop/package.json b/desktop/package.json index 97a3b580..e4e1749f 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -21,8 +21,6 @@ }, "dependencies": { "@nut-tree/nut-js": "2.3.0", - "@stomp/stompjs": "6.1.2", - "axios": "1.1.3", "electron-store": "8.1.0", "graphql": "16.6.0", "graphql-request": "5.0.0", diff --git a/desktop/packages/main/openapitools.json b/desktop/packages/main/openapitools.json deleted file mode 100644 index 27e6d53b..00000000 --- a/desktop/packages/main/openapitools.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", - "spaces": 2, - "generator-cli": { - "version": "6.2.0" - } -} diff --git a/desktop/packages/main/package.json b/desktop/packages/main/package.json index fd7f55b6..5ba9d813 100644 --- a/desktop/packages/main/package.json +++ b/desktop/packages/main/package.json @@ -12,7 +12,6 @@ "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", "@graphql-typed-document-node/core": "3.1.1", - "@openapitools/openapi-generator-cli": "2.5.2", "@smartpointer-desktop/eslintrc": "1.1.0-SNAPSHOT", "@smartpointer-desktop/tsconfig": "1.1.0-SNAPSHOT", "@types/ws": "8.5.3" diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 11a254ae..6d395701 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -10,11 +10,11 @@ import { screen } from "electron"; import { requestHttp } from "@/api"; import { graphql } from "@/gql"; import { model } from "@/model"; -import { - activate, - listenRoomSubscription, - unsubscribeRoomSubscription, -} from "@/stomp"; +// import { +// activate, +// listenRoomSubscription, +// unsubscribeRoomSubscription, +// } from "@/stomp"; import { store } from "@/store"; import { view } from "@/view"; @@ -71,11 +71,15 @@ export const controller = { console.log("created room", data.createRoom); - await activate(); + // TODO: GraphQL 移行 + // await activate(); + console.log("before", model.state); model.createdRoom(data.createRoom, screen.getPrimaryDisplay().id); + console.log("after", model.state); - listenRoomSubscription(data.createRoom.id); + // TODO: GraphQL 移行 + // listenRoomSubscription(data.createRoom.id); view.tray.update(); await view.window.pointerOverlay.show(); @@ -93,7 +97,8 @@ export const controller = { closeRoom: () => { view.window.pointerOverlay.close(); view.window.inviteLink.close(); - unsubscribeRoomSubscription(); + // TODO: GraphQL 移行 + // unsubscribeRoomSubscription(); model.closeRoom(); }, diff --git a/desktop/packages/main/src/stomp.ts b/desktop/packages/main/src/stomp.ts index 06b604ed..ce3602a3 100644 --- a/desktop/packages/main/src/stomp.ts +++ b/desktop/packages/main/src/stomp.ts @@ -1,120 +1,124 @@ -import { Client, StompSubscription } from "@stomp/stompjs"; -import WebSocket from "ws"; +// +// GraphQL 移行が完了すれば削除する +// -import { controller } from "./controller"; -import { goNext, goPrevious } from "./pagination"; +// import { Client, StompSubscription } from "@stomp/stompjs"; +// import WebSocket from "ws"; -Object.assign(global, { WebSocket }); +// import { controller } from "./controller"; +// import { goNext, goPrevious } from "./pagination"; -const brokerURL = - process.env["USE_DEV_BACKEND"] === "true" - ? "ws://localhost:8080/ws" - : "wss://smartpointer.abelab.dev/ws"; +// Object.assign(global, { WebSocket }); -const stompClient = new Client({ - brokerURL, - debug: console.log, -}); +// const brokerURL = +// process.env["USE_DEV_BACKEND"] === "true" +// ? "ws://localhost:8080/ws" +// : "wss://smartpointer.abelab.dev/ws"; -enum SlideControl { - NEXT, - PREVIOUS, -} +// const stompClient = new Client({ +// brokerURL, +// debug: console.log, +// }); -let slidesControlSubscription: StompSubscription | null = null; -let pointerControlSubscription: StompSubscription | null = null; +// enum SlideControl { +// NEXT, +// PREVIOUS, +// } -export const activate = () => - new Promise((resolve, reject) => { - if (stompClient.connected) { - resolve(undefined); - console.log("[STOMP] already connected"); - return; - } - console.log(`[STOMP] Connecting to ${brokerURL}...`); +// let slidesControlSubscription: StompSubscription | null = null; +// let pointerControlSubscription: StompSubscription | null = null; - stompClient.onConnect = (frame) => { - console.log("[STOMP] Connected to broker:", frame); - resolve(undefined); - }; +// export const activate = () => +// new Promise((resolve, reject) => { +// if (stompClient.connected) { +// resolve(undefined); +// console.log("[STOMP] already connected"); +// return; +// } +// console.log(`[STOMP] Connecting to ${brokerURL}...`); - stompClient.onStompError = (frame) => { - console.error("[STOMP] Broker reported error:"); - console.error(frame.headers["message"]); - console.error("Additional details:"); - console.error(frame.body); - reject(new Error(`STOMP error:\n${frame.headers["message"]}`)); - }; +// stompClient.onConnect = (frame) => { +// console.log("[STOMP] Connected to broker:", frame); +// resolve(undefined); +// }; - stompClient.activate(); - }); +// stompClient.onStompError = (frame) => { +// console.error("[STOMP] Broker reported error:"); +// console.error(frame.headers["message"]); +// console.error("Additional details:"); +// console.error(frame.body); +// reject(new Error(`STOMP error:\n${frame.headers["message"]}`)); +// }; -export const listenRoomSubscription = async (roomId: string) => { - slidesControlSubscription = stompClient.subscribe( - `/topic/rooms/${roomId}/slides/control`, - (message) => { - type Response = { - control: SlideControl; - }; - const body = JSON.parse(message.body) as Response; - if (body.control === SlideControl.NEXT) { - goNext(); - } else { - goPrevious(); - } - } - ); +// stompClient.activate(); +// }); - // ポインター操作を購読 - pointerControlSubscription = stompClient.subscribe( - `/topic/rooms/${roomId}/pointer/control`, - (message) => { - type Response = - | { - isActive: true; - rotation: { - alpha: number; - beta: number; - gamma: number; - }; - } - | { - isActive: false; - rotation: null; - }; - const body = JSON.parse(message.body) as Response; +// export const listenRoomSubscription = async (roomId: string) => { +// slidesControlSubscription = stompClient.subscribe( +// `/topic/rooms/${roomId}/slides/control`, +// (message) => { +// type Response = { +// control: SlideControl; +// }; +// const body = JSON.parse(message.body) as Response; +// if (body.control === SlideControl.NEXT) { +// goNext(); +// } else { +// goPrevious(); +// } +// } +// ); - if (body.isActive) { - // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する - controller.pointerUpdated( - { - id: "user-id", - name: "user-name", - }, - { - alpha: body.rotation.alpha, - beta: body.rotation.beta, - gamma: body.rotation.gamma, - } - ); - } else { - // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する - controller.pointerDeactivated({ - id: "user-id", - name: "user-name", - }); - } - } - ); -}; +// // ポインター操作を購読 +// pointerControlSubscription = stompClient.subscribe( +// `/topic/rooms/${roomId}/pointer/control`, +// (message) => { +// type Response = +// | { +// isActive: true; +// rotation: { +// alpha: number; +// beta: number; +// gamma: number; +// }; +// } +// | { +// isActive: false; +// rotation: null; +// }; +// const body = JSON.parse(message.body) as Response; -export const unsubscribeRoomSubscription = () => { - if (slidesControlSubscription) { - slidesControlSubscription.unsubscribe(); - slidesControlSubscription = null; - } - if (pointerControlSubscription) { - pointerControlSubscription.unsubscribe(); - pointerControlSubscription = null; - } -}; +// if (body.isActive) { +// // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する +// controller.pointerUpdated( +// { +// id: "user-id", +// name: "user-name", +// }, +// { +// alpha: body.rotation.alpha, +// beta: body.rotation.beta, +// gamma: body.rotation.gamma, +// } +// ); +// } else { +// // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する +// controller.pointerDeactivated({ +// id: "user-id", +// name: "user-name", +// }); +// } +// } +// ); +// }; + +// export const unsubscribeRoomSubscription = () => { +// if (slidesControlSubscription) { +// slidesControlSubscription.unsubscribe(); +// slidesControlSubscription = null; +// } +// if (pointerControlSubscription) { +// pointerControlSubscription.unsubscribe(); +// pointerControlSubscription = null; +// } +// }; From 7a92279afecf6c28ee6d8f3d9f41ac1eeb1bd012 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Fri, 11 Nov 2022 20:05:53 +0900 Subject: [PATCH 123/189] =?UTF-8?q?remove:=20pointer=20>=20axios,OpenAPI,s?= =?UTF-8?q?tomp=20=E3=82=92=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82=E3=81=8B?= =?UTF-8?q?=E3=82=89=E5=89=8A=E9=99=A4=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/pointer/openapitools.json | 7 - app/src/main/pointer/package-lock.json | 1255 +---------------- app/src/main/pointer/package.json | 3 - .../main/pointer/src/components/Paginator.tsx | 25 +- app/src/main/pointer/src/components/Timer.tsx | 80 +- app/src/main/pointer/src/deviceorientation.ts | 16 +- app/src/main/pointer/src/stomp.ts | 30 - desktop/packages/main/src/stomp.ts | 124 -- 8 files changed, 131 insertions(+), 1409 deletions(-) delete mode 100644 app/src/main/pointer/openapitools.json delete mode 100644 app/src/main/pointer/src/stomp.ts delete mode 100644 desktop/packages/main/src/stomp.ts diff --git a/app/src/main/pointer/openapitools.json b/app/src/main/pointer/openapitools.json deleted file mode 100644 index 27e6d53b..00000000 --- a/app/src/main/pointer/openapitools.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", - "spaces": 2, - "generator-cli": { - "version": "6.2.0" - } -} diff --git a/app/src/main/pointer/package-lock.json b/app/src/main/pointer/package-lock.json index 347395fc..22172262 100644 --- a/app/src/main/pointer/package-lock.json +++ b/app/src/main/pointer/package-lock.json @@ -12,8 +12,6 @@ "@emotion/react": "11.10.4", "@emotion/styled": "11.10.4", "@heroicons/react": "^2.0.12", - "@stomp/stompjs": "^6.1.2", - "axios": "^1.1.3", "framer-motion": "7.5.3", "graphql": "16.6.0", "graphql-request": "5.0.0", @@ -26,7 +24,6 @@ "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", "@graphql-typed-document-node/core": "^3.1.1", - "@openapitools/openapi-generator-cli": "2.5.2", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", "@typescript-eslint/eslint-plugin": "^5.40.0", @@ -3896,100 +3893,6 @@ "node": ">=14" } }, - "node_modules/@nestjs/common": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", - "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", - "dev": true, - "dependencies": { - "axios": "0.26.1", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "cache-manager": "*", - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "cache-manager": { - "optional": true - }, - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/common/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/@nestjs/common/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/@nestjs/core": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", - "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "3.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0", - "@nestjs/websockets": "^8.0.0", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } - } - }, - "node_modules/@nestjs/core/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4025,204 +3928,12 @@ "node": ">= 8" } }, - "node_modules/@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@nuxtjs/opencollective/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@open-draft/until": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", "dev": true }, - "node_modules/@openapitools/openapi-generator-cli": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", - "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@nestjs/common": "8.4.4", - "@nestjs/core": "8.4.4", - "@nuxtjs/opencollective": "0.3.2", - "chalk": "4.1.2", - "commander": "8.3.0", - "compare-versions": "4.1.3", - "concurrently": "6.5.1", - "console.table": "0.10.0", - "fs-extra": "10.0.1", - "glob": "7.1.6", - "inquirer": "8.2.2", - "lodash": "4.17.21", - "reflect-metadata": "0.1.13", - "rxjs": "7.5.5", - "tslib": "2.0.3" - }, - "bin": { - "openapi-generator-cli": "main.js" - }, - "engines": { - "node": ">=10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/openapi_generator" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@peculiar/asn1-schema": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.0.tgz", @@ -4315,11 +4026,6 @@ "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==", "dev": true }, - "node_modules/@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" - }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -5144,16 +4850,6 @@ "node": ">=4" } }, - "node_modules/axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -5619,17 +5315,6 @@ "node": ">= 10" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -5669,184 +5354,26 @@ "node": ">= 0.8" } }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/compare-versions": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", - "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", - "dev": true - }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", - "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concurrently": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", - "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" - }, - "bin": { - "concurrently": "bin/concurrently.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/concurrently/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/concurrently/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concurrently/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "node_modules/console.table": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", - "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, - "dependencies": { - "easy-table": "1.1.0" - }, "engines": { - "node": "> 0.10" + "node": ">=4.0.0" } }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", + "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, "node_modules/constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", @@ -5984,19 +5511,6 @@ "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", "dev": true }, - "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "dev": true, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -6175,15 +5689,6 @@ "node": ">=4" } }, - "node_modules/easy-table": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", - "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", - "dev": true, - "optionalDependencies": { - "wcwidth": ">=1.0.1" - } - }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -7307,12 +6812,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -7451,25 +6950,6 @@ "node": ">=10" } }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -7479,19 +6959,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/form-data-encoder": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", @@ -7581,20 +7048,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, - "node_modules/fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -8717,15 +8170,6 @@ "ws": "*" } }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", @@ -8825,18 +8269,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", @@ -9851,15 +9283,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -10302,12 +9725,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", - "dev": true - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -10454,11 +9871,6 @@ "react-is": "^16.13.1" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -10726,12 +10138,6 @@ "node": ">=8.10.0" } }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, "node_modules/regenerator-runtime": { "version": "0.13.10", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", @@ -11179,12 +10585,6 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -11580,15 +10980,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, "node_modules/ts-log": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", @@ -11789,15 +11180,6 @@ "node": ">=12.18" } }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/unixify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", @@ -11934,15 +11316,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -12310,33 +11683,6 @@ "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", "dev": true }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -15351,256 +14697,68 @@ "tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } - } - }, - "@mswjs/cookies": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz", - "integrity": "sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==", - "dev": true, - "requires": { - "@types/set-cookie-parser": "^2.4.0", - "set-cookie-parser": "^2.4.6" - } - }, - "@mswjs/interceptors": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.6.tgz", - "integrity": "sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ==", - "dev": true, - "requires": { - "@open-draft/until": "^1.0.3", - "@types/debug": "^4.1.7", - "@xmldom/xmldom": "^0.8.3", - "debug": "^4.3.3", - "headers-polyfill": "^3.1.0", - "outvariant": "^1.2.1", - "strict-event-emitter": "^0.2.4", - "web-encoding": "^1.1.5" - } - }, - "@nestjs/common": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", - "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", - "dev": true, - "requires": { - "axios": "0.26.1", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "dependencies": { - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.8" - } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - } - } - }, - "@nestjs/core": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.4.tgz", - "integrity": "sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==", - "dev": true, - "requires": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "3.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "dependencies": { - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, + "@mswjs/cookies": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz", + "integrity": "sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==", + "dev": true, + "requires": { + "@types/set-cookie-parser": "^2.4.0", + "set-cookie-parser": "^2.4.6" + } + }, + "@mswjs/interceptors": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.6.tgz", + "integrity": "sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ==", + "dev": true, + "requires": { + "@open-draft/until": "^1.0.3", + "@types/debug": "^4.1.7", + "@xmldom/xmldom": "^0.8.3", + "debug": "^4.3.3", + "headers-polyfill": "^3.1.0", + "outvariant": "^1.2.1", + "strict-event-emitter": "^0.2.4", + "web-encoding": "^1.1.5" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@open-draft/until": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", "dev": true }, - "@openapitools/openapi-generator-cli": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.5.2.tgz", - "integrity": "sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==", - "dev": true, - "requires": { - "@nestjs/common": "8.4.4", - "@nestjs/core": "8.4.4", - "@nuxtjs/opencollective": "0.3.2", - "chalk": "4.1.2", - "commander": "8.3.0", - "compare-versions": "4.1.3", - "concurrently": "6.5.1", - "console.table": "0.10.0", - "fs-extra": "10.0.1", - "glob": "7.1.6", - "inquirer": "8.2.2", - "lodash": "4.17.21", - "reflect-metadata": "0.1.13", - "rxjs": "7.5.5", - "tslib": "2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "@peculiar/asn1-schema": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.0.tgz", @@ -15683,11 +14841,6 @@ "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==", "dev": true }, - "@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" - }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -16297,16 +15450,6 @@ "integrity": "sha512-1exVbW0X1O/HSr/WMwnaweyqcWOgZgLiVxdLG34pvSQk4NlYQr9OUy0JLwuhFfuVNQzzqgH57eYzkFBCb3bIsQ==", "dev": true }, - "axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -16650,17 +15793,6 @@ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -16694,24 +15826,12 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, "common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true }, - "compare-versions": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", - "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", - "dev": true - }, "compute-scroll-into-view": { "version": "1.0.14", "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", @@ -16723,114 +15843,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "concurrently": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", - "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "console.table": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", - "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", - "dev": true, - "requires": { - "easy-table": "1.1.0" - } - }, "constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", @@ -16945,12 +15957,6 @@ "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", "dev": true }, - "date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "dev": true - }, "debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -17079,15 +16085,6 @@ "integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==", "dev": true }, - "easy-table": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", - "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", - "dev": true, - "requires": { - "wcwidth": ">=1.0.1" - } - }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -17843,12 +16840,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -17962,11 +16953,6 @@ "tslib": "^2.0.3" } }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -17976,16 +16962,6 @@ "is-callable": "^1.1.3" } }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "form-data-encoder": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", @@ -18069,17 +17045,6 @@ } } }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -18885,12 +17850,6 @@ "dev": true, "requires": {} }, - "iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "dev": true - }, "js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", @@ -18969,16 +17928,6 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, "jsonify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", @@ -19739,12 +18688,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true - }, "object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -20066,12 +19009,6 @@ "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", "dev": true }, - "path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", - "dev": true - }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -20174,11 +19111,6 @@ "react-is": "^16.13.1" } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -20354,12 +19286,6 @@ "picomatch": "^2.2.1" } }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, "regenerator-runtime": { "version": "0.13.10", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", @@ -20695,12 +19621,6 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -21030,12 +19950,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, "ts-log": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", @@ -21168,12 +20082,6 @@ "busboy": "^1.6.0" } }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, "unixify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", @@ -21266,12 +20174,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, "v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -21513,27 +20415,6 @@ "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", "dev": true }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/app/src/main/pointer/package.json b/app/src/main/pointer/package.json index 1e913da6..eba3b869 100644 --- a/app/src/main/pointer/package.json +++ b/app/src/main/pointer/package.json @@ -22,8 +22,6 @@ "@emotion/react": "11.10.4", "@emotion/styled": "11.10.4", "@heroicons/react": "^2.0.12", - "@stomp/stompjs": "^6.1.2", - "axios": "^1.1.3", "framer-motion": "7.5.3", "graphql": "16.6.0", "graphql-request": "5.0.0", @@ -36,7 +34,6 @@ "@graphql-codegen/cli": "2.13.11", "@graphql-codegen/client-preset": "1.1.3", "@graphql-typed-document-node/core": "^3.1.1", - "@openapitools/openapi-generator-cli": "2.5.2", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", "@typescript-eslint/eslint-plugin": "^5.40.0", diff --git a/app/src/main/pointer/src/components/Paginator.tsx b/app/src/main/pointer/src/components/Paginator.tsx index e6b4a381..83a515d3 100644 --- a/app/src/main/pointer/src/components/Paginator.tsx +++ b/app/src/main/pointer/src/components/Paginator.tsx @@ -1,8 +1,8 @@ -import { IconButton, Icon, Flex, VStack, Heading } from "@chakra-ui/react"; +import { IconButton, Icon, Flex } from "@chakra-ui/react"; import { ChevronLeftIcon, ChevronRightIcon } from "@heroicons/react/24/solid"; import { FC } from "react"; -import { stompClient } from "@/stomp"; +// import { stompClient } from "@/stomp"; import { AuthData } from "@/types/AuthData"; type Props = { @@ -11,17 +11,20 @@ type Props = { export const Paginator: FC = ({ authData }) => { const goNext = () => { - stompClient.publish({ - destination: `/app/rooms/${authData.roomId}/slides/next`, - body: JSON.stringify({ room_id: authData.roomId }), - }); + // TODO: GraphQL 移行 + // stompClient.publish({ + // destination: `/app/rooms/${authData.roomId}/slides/next`, + // body: JSON.stringify({ room_id: authData.roomId }), + // }); }; - const goPrevious = () => - stompClient.publish({ - destination: `/app/rooms/${authData.roomId}/slides/previous`, - body: JSON.stringify({ room_id: authData.roomId }), - }); + const goPrevious = () => { + // TODO: GraphQL 移行 + // stompClient.publish({ + // destination: `/app/rooms/${authData.roomId}/slides/previous`, + // body: JSON.stringify({ room_id: authData.roomId }), + // }); + }; return ( = ({ authData }) => { console.log(values); switch (state) { case "READY": { - stompClient.publish({ - destination: `/app/rooms/${authData.roomId}/timer/start`, - body: JSON.stringify({ - value: Number(values.minutes) * 60 + Number(values.seconds), - }), - }); + // TODO: GraphQL 移行 + // stompClient.publish({ + // destination: `/app/rooms/${authData.roomId}/timer/start`, + // body: JSON.stringify({ + // value: Number(values.minutes) * 60 + Number(values.seconds), + // }), + // }); return; } case "RUNNING": { - stompClient.publish({ - destination: `/app/rooms/${authData.roomId}/timer/stop`, - }); + // TODO: GraphQL 移行 + // stompClient.publish({ + // destination: `/app/rooms/${authData.roomId}/timer/stop`, + // }); return; } } }; useEffect(() => { - stompClient.subscribe( - `/topic/rooms/${authData.roomId}/timer`, - (message) => { - console.log(message); - const { status, value, finishAt } = JSON.parse(message.body) as { - status: 0 | 1; - value: number; - finishAt: string; - }; - switch (status) { - case 0: { - const minutes = Math.floor(value / 60); - const seconds = value % 60; - setValue("minutes", minutes.toString()); - setValue("seconds", seconds.toString()); - setState("READY"); - return; - } - case 1: { - setFinishedTimestamp( - performance.now() + new Date(finishAt).valueOf() - Date.now() - ); - setState("RUNNING"); - return; - } - } - } - ); + // TODO: GraphQL 移行 + // stompClient.subscribe( + // `/topic/rooms/${authData.roomId}/timer`, + // (message) => { + // console.log(message); + // const { status, value, finishAt } = JSON.parse(message.body) as { + // status: 0 | 1; + // value: number; + // finishAt: string; + // }; + // switch (status) { + // case 0: { + // const minutes = Math.floor(value / 60); + // const seconds = value % 60; + // setValue("minutes", minutes.toString()); + // setValue("seconds", seconds.toString()); + // setState("READY"); + // return; + // } + // case 1: { + // setFinishedTimestamp( + // performance.now() + new Date(finishAt).valueOf() - Date.now() + // ); + // setState("RUNNING"); + // return; + // } + // } + // } + // ); }, [authData.roomId, setValue]); useEffect(() => { diff --git a/app/src/main/pointer/src/deviceorientation.ts b/app/src/main/pointer/src/deviceorientation.ts index 2a79a6a2..4337cb77 100644 --- a/app/src/main/pointer/src/deviceorientation.ts +++ b/app/src/main/pointer/src/deviceorientation.ts @@ -1,4 +1,4 @@ -import { stompClient } from "./stomp"; +// import { stompClient } from "./stomp"; const messagePleasingWhenDeny = [ "使用するには許可してください🥺", @@ -60,10 +60,10 @@ export const subscribeOrientation = (roomId: string) => { lastOrientation = lastOrientation ?? orientation; - stompClient.publish({ - destination: `/app/rooms/${roomId}/pointer/control`, - body: JSON.stringify(sub(orientation, lastOrientation)), - }); + // stompClient.publish({ + // destination: `/app/rooms/${roomId}/pointer/control`, + // body: JSON.stringify(sub(orientation, lastOrientation)), + // }); }; window.addEventListener("deviceorientation", handler); }; @@ -74,7 +74,7 @@ export const unsubscribeOrientation = (roomId: string) => { window.removeEventListener("deviceorientation", handler); handler = null; } - stompClient.publish({ - destination: `/app/rooms/${roomId}/pointer/disconnect`, - }); + // stompClient.publish({ + // destination: `/app/rooms/${roomId}/pointer/disconnect`, + // }); }; diff --git a/app/src/main/pointer/src/stomp.ts b/app/src/main/pointer/src/stomp.ts deleted file mode 100644 index 7c2813ea..00000000 --- a/app/src/main/pointer/src/stomp.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Client } from "@stomp/stompjs"; - -const brokerURL = `wss://${location.host}/ws`; - -export const stompClient = new Client({ - brokerURL, - debug: console.log, -}); - -export const activate = () => - new Promise((resolve, reject) => { - if (stompClient.connected) { - resolve(undefined); - } else { - stompClient.onConnect = (frame) => { - console.log("Connected to broker:", frame); - resolve(undefined); - }; - - stompClient.onStompError = (frame) => { - console.error("Broker reported error:"); - console.error(frame.headers["message"]); - console.error("Additional details:"); - console.error(frame.body); - reject(new Error(`STOMP error:\n${frame.headers["message"]}`)); - }; - } - - stompClient.activate(); - }); diff --git a/desktop/packages/main/src/stomp.ts b/desktop/packages/main/src/stomp.ts deleted file mode 100644 index ce3602a3..00000000 --- a/desktop/packages/main/src/stomp.ts +++ /dev/null @@ -1,124 +0,0 @@ -// -// GraphQL 移行が完了すれば削除する -// - -// import { Client, StompSubscription } from "@stomp/stompjs"; -// import WebSocket from "ws"; - -// import { controller } from "./controller"; -// import { goNext, goPrevious } from "./pagination"; - -// Object.assign(global, { WebSocket }); - -// const brokerURL = -// process.env["USE_DEV_BACKEND"] === "true" -// ? "ws://localhost:8080/ws" -// : "wss://smartpointer.abelab.dev/ws"; - -// const stompClient = new Client({ -// brokerURL, -// debug: console.log, -// }); - -// enum SlideControl { -// NEXT, -// PREVIOUS, -// } - -// let slidesControlSubscription: StompSubscription | null = null; -// let pointerControlSubscription: StompSubscription | null = null; - -// export const activate = () => -// new Promise((resolve, reject) => { -// if (stompClient.connected) { -// resolve(undefined); -// console.log("[STOMP] already connected"); -// return; -// } -// console.log(`[STOMP] Connecting to ${brokerURL}...`); - -// stompClient.onConnect = (frame) => { -// console.log("[STOMP] Connected to broker:", frame); -// resolve(undefined); -// }; - -// stompClient.onStompError = (frame) => { -// console.error("[STOMP] Broker reported error:"); -// console.error(frame.headers["message"]); -// console.error("Additional details:"); -// console.error(frame.body); -// reject(new Error(`STOMP error:\n${frame.headers["message"]}`)); -// }; - -// stompClient.activate(); -// }); - -// export const listenRoomSubscription = async (roomId: string) => { -// slidesControlSubscription = stompClient.subscribe( -// `/topic/rooms/${roomId}/slides/control`, -// (message) => { -// type Response = { -// control: SlideControl; -// }; -// const body = JSON.parse(message.body) as Response; -// if (body.control === SlideControl.NEXT) { -// goNext(); -// } else { -// goPrevious(); -// } -// } -// ); - -// // ポインター操作を購読 -// pointerControlSubscription = stompClient.subscribe( -// `/topic/rooms/${roomId}/pointer/control`, -// (message) => { -// type Response = -// | { -// isActive: true; -// rotation: { -// alpha: number; -// beta: number; -// gamma: number; -// }; -// } -// | { -// isActive: false; -// rotation: null; -// }; -// const body = JSON.parse(message.body) as Response; - -// if (body.isActive) { -// // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する -// controller.pointerUpdated( -// { -// id: "user-id", -// name: "user-name", -// }, -// { -// alpha: body.rotation.alpha, -// beta: body.rotation.beta, -// gamma: body.rotation.gamma, -// } -// ); -// } else { -// // TODO: ポインターに認証情報が実装されたら、認証情報を使ってユーザーを特定する -// controller.pointerDeactivated({ -// id: "user-id", -// name: "user-name", -// }); -// } -// } -// ); -// }; - -// export const unsubscribeRoomSubscription = () => { -// if (slidesControlSubscription) { -// slidesControlSubscription.unsubscribe(); -// slidesControlSubscription = null; -// } -// if (pointerControlSubscription) { -// pointerControlSubscription.unsubscribe(); -// pointerControlSubscription = null; -// } -// }; From d3f36d053a3b039c4890cd6174ff5f72793fa0f2 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 20:00:55 +0900 Subject: [PATCH 124/189] =?UTF-8?q?[feat]=20=E5=90=84=E3=82=AA=E3=83=9A?= =?UTF-8?q?=E3=83=AC=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=AE=E5=BC=95?= =?UTF-8?q?=E6=95=B0=E3=81=AB=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=83=BC=E3=82=AF=E3=83=B3=E3=82=92=E6=8C=87=E5=AE=9A=E3=81=99?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/exception/ErrorCode.java | 2 + .../api/controller/PointerController.java | 27 ++++----- .../api/controller/SlideController.java | 25 +++----- .../api/controller/TimerController.java | 45 ++++++-------- .../abelab/smartpointer/util/AuthUtil.java | 46 +++++++++++++++ .../main/resources/graphql/schema.graphqls | 52 +++++++++++++++-- app/src/main/resources/i18n/messages.yml | 1 + .../controller/AbstractController_IT.groovy | 25 +++----- .../controller/PointerController_IT.groovy | 24 ++++---- .../api/controller/SlideController_IT.groovy | 21 +++---- .../api/controller/TimerController_IT.groovy | 58 +++++++++---------- 11 files changed, 183 insertions(+), 143 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/util/AuthUtil.java diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java index 8e9cda59..39624445 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java @@ -36,6 +36,8 @@ public enum ErrorCode { INCORRECT_ROOM_PASSCODE(2001, "exception.unauthorized.incorrect_room_passcode"), + INVALID_ACCESS_TOKEN(2002, "exception.unauthorized.invalid_access_token"), + /** * 403 Forbidden: 3000~3999 */ diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java index 598dce61..069e1bc4 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java @@ -1,23 +1,18 @@ package dev.abelab.smartpointer.infrastructure.api.controller; -import java.util.Objects; - import org.reactivestreams.Publisher; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.graphql.data.method.annotation.SubscriptionMapping; -import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; -import dev.abelab.smartpointer.auth.LoginUserDetails; import dev.abelab.smartpointer.domain.model.PointerControlModel; import dev.abelab.smartpointer.domain.model.UserModel; -import dev.abelab.smartpointer.exception.ErrorCode; -import dev.abelab.smartpointer.exception.UnauthorizedException; import dev.abelab.smartpointer.infrastructure.api.type.PointerControl; import dev.abelab.smartpointer.infrastructure.api.type.User; import dev.abelab.smartpointer.usecase.pointer.DisconnectPointerUseCase; import dev.abelab.smartpointer.usecase.pointer.MovePointerUseCase; +import dev.abelab.smartpointer.util.AuthUtil; import lombok.RequiredArgsConstructor; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; @@ -37,6 +32,8 @@ public class PointerController { private final Sinks.Many pointerDisconnectSink; + private final AuthUtil authUtil; + private final MovePointerUseCase movePointerUseCase; private final DisconnectPointerUseCase disconnectPointerUseCase; @@ -44,19 +41,17 @@ public class PointerController { /** * ポインター操作API * - * @param loginUser ログインユーザ + * @param accessToken アクセストークン * @return ポインター操作 */ @MutationMapping public PointerControl movePointer( // - @AuthenticationPrincipal final LoginUserDetails loginUser, // @Argument final Double alpha, // @Argument final Double beta, // - @Argument final Double gamma // + @Argument final Double gamma, // + @Argument final String accessToken // ) { - if (Objects.isNull(loginUser)) { - throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); - } + final var loginUser = this.authUtil.getLoginUser(accessToken); final var pointerControl = this.movePointerUseCase.handle(loginUser.getRoomId(), loginUser, alpha, beta, gamma); this.pointerControlSink.tryEmitNext(pointerControl); @@ -66,16 +61,14 @@ public PointerControl movePointer( // /** * ポインター切断API * - * @param loginUser ログインユーザ + * @param accessToken アクセストークン * @return ユーザ */ @MutationMapping public User disconnectPointer( // - @AuthenticationPrincipal final LoginUserDetails loginUser // + @Argument final String accessToken // ) { - if (Objects.isNull(loginUser)) { - throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); - } + final var loginUser = this.authUtil.getLoginUser(accessToken); final var user = this.disconnectPointerUseCase.handle(loginUser.getRoomId(), loginUser); this.pointerDisconnectSink.tryEmitNext(user); diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java index 6aa08796..b90e0e25 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/SlideController.java @@ -1,21 +1,16 @@ package dev.abelab.smartpointer.infrastructure.api.controller; -import java.util.Objects; - import org.reactivestreams.Publisher; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.graphql.data.method.annotation.SubscriptionMapping; -import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; -import dev.abelab.smartpointer.auth.LoginUserDetails; import dev.abelab.smartpointer.domain.model.SlideControlModel; import dev.abelab.smartpointer.enums.SlideControl; -import dev.abelab.smartpointer.exception.ErrorCode; -import dev.abelab.smartpointer.exception.UnauthorizedException; import dev.abelab.smartpointer.usecase.slide.GoNextSlideUseCase; import dev.abelab.smartpointer.usecase.slide.GoPreviousSlideUseCase; +import dev.abelab.smartpointer.util.AuthUtil; import lombok.RequiredArgsConstructor; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; @@ -31,6 +26,8 @@ public class SlideController { private final Sinks.Many slideControlSink; + private final AuthUtil authUtil; + private final GoNextSlideUseCase goNextSlideUseCase; private final GoPreviousSlideUseCase goPreviousSlideUseCase; @@ -38,16 +35,14 @@ public class SlideController { /** * スライドを進めるAPI * - * @param loginUser ログインユーザ + * @param accessToken アクセストークン * @return スライド操作 */ @MutationMapping public SlideControl goNextSlide( // - @AuthenticationPrincipal final LoginUserDetails loginUser // + @Argument final String accessToken // ) { - if (Objects.isNull(loginUser)) { - throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); - } + final var loginUser = this.authUtil.getLoginUser(accessToken); final var slideControl = this.goNextSlideUseCase.handle(loginUser.getRoomId()); this.slideControlSink.tryEmitNext(slideControl); @@ -57,16 +52,14 @@ public SlideControl goNextSlide( // /** * スライドを戻すAPI * - * @param loginUser ログインユーザ + * @param accessToken アクセストークン * @return スライド操作 */ @MutationMapping public SlideControl goPreviousSlide( // - @AuthenticationPrincipal final LoginUserDetails loginUser // + @Argument final String accessToken // ) { - if (Objects.isNull(loginUser)) { - throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); - } + final var loginUser = this.authUtil.getLoginUser(accessToken); final var slideControl = this.goPreviousSlideUseCase.handle(loginUser.getRoomId()); this.slideControlSink.tryEmitNext(slideControl); diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java index 2999b26a..e18da235 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/TimerController.java @@ -1,21 +1,16 @@ package dev.abelab.smartpointer.infrastructure.api.controller; -import java.util.Objects; - import org.reactivestreams.Publisher; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.graphql.data.method.annotation.QueryMapping; import org.springframework.graphql.data.method.annotation.SubscriptionMapping; -import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; -import dev.abelab.smartpointer.auth.LoginUserDetails; import dev.abelab.smartpointer.domain.model.TimerModel; -import dev.abelab.smartpointer.exception.ErrorCode; -import dev.abelab.smartpointer.exception.UnauthorizedException; import dev.abelab.smartpointer.infrastructure.api.type.Timer; import dev.abelab.smartpointer.usecase.timer.*; +import dev.abelab.smartpointer.util.AuthUtil; import lombok.RequiredArgsConstructor; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; @@ -31,6 +26,8 @@ public class TimerController { private final Sinks.Many timerSink; + private final AuthUtil authUtil; + private final GetTimerUseCase getTimerUseCase; private final StartTimerUseCase startTimerUseCase; @@ -56,19 +53,17 @@ public Timer getTimer( // /** * タイマー開始API - * - * @param loginUser ログインユーザ + * * @param inputTime 入力時間 + * @param accessToken アクセストークン * @return タイマー */ @MutationMapping public Timer startTimer( // - @AuthenticationPrincipal final LoginUserDetails loginUser, // - @Argument final Integer inputTime // + @Argument final Integer inputTime, // + @Argument final String accessToken // ) { - if (Objects.isNull(loginUser)) { - throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); - } + final var loginUser = this.authUtil.getLoginUser(accessToken); final var timer = this.startTimerUseCase.handle(loginUser.getRoomId(), inputTime); this.timerSink.tryEmitNext(timer); @@ -78,16 +73,14 @@ public Timer startTimer( // /** * タイマー再開API * - * @param loginUser ログインユーザ + * @param accessToken アクセストークン * @return タイマー */ @MutationMapping public Timer resumeTimer( // - @AuthenticationPrincipal final LoginUserDetails loginUser // + @Argument final String accessToken // ) { - if (Objects.isNull(loginUser)) { - throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); - } + final var loginUser = this.authUtil.getLoginUser(accessToken); final var timer = this.resumeTimerUseCase.handle(loginUser.getRoomId()); this.timerSink.tryEmitNext(timer); @@ -97,16 +90,14 @@ public Timer resumeTimer( // /** * タイマー一時停止API * - * @param loginUser ログインユーザ + * @param accessToken アクセストークン * @return タイマー */ @MutationMapping public Timer pauseTimer( // - @AuthenticationPrincipal final LoginUserDetails loginUser // + @Argument final String accessToken // ) { - if (Objects.isNull(loginUser)) { - throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); - } + final var loginUser = this.authUtil.getLoginUser(accessToken); final var timer = this.pauseTimerUseCase.handle(loginUser.getRoomId()); this.timerSink.tryEmitNext(timer); @@ -116,16 +107,14 @@ public Timer pauseTimer( // /** * タイマーリセットAPI * - * @param loginUser ログインユーザ + * @param accessToken アクセストークン * @return タイマー */ @MutationMapping public Timer resetTimer( // - @AuthenticationPrincipal final LoginUserDetails loginUser // + @Argument final String accessToken // ) { - if (Objects.isNull(loginUser)) { - throw new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN); - } + final var loginUser = this.authUtil.getLoginUser(accessToken); final var timer = this.resetTimerUseCase.handle(loginUser.getRoomId()); this.timerSink.tryEmitNext(timer); diff --git a/app/src/main/java/dev/abelab/smartpointer/util/AuthUtil.java b/app/src/main/java/dev/abelab/smartpointer/util/AuthUtil.java new file mode 100644 index 00000000..3a2ca5d4 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/util/AuthUtil.java @@ -0,0 +1,46 @@ +package dev.abelab.smartpointer.util; + +import org.springframework.stereotype.Component; + +import dev.abelab.smartpointer.domain.model.UserModel; +import dev.abelab.smartpointer.domain.repository.UserRepository; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.UnauthorizedException; +import dev.abelab.smartpointer.property.AuthProperty; +import io.jsonwebtoken.Jwts; +import lombok.RequiredArgsConstructor; + +/** + * 認証ユーティリティ + */ +@Component +@RequiredArgsConstructor +public class AuthUtil { + + private final UserRepository userRepository; + + private final AuthProperty authProperty; + + /** + * アクセストークンからログインユーザを取得 + * + * @param accessToken アクセストークン + * @return ログインユーザ + */ + public UserModel getLoginUser(final String accessToken) { + try { + final var subject = Jwts.parser() // + .setSigningKey(this.authProperty.getJwt().getSecret().getBytes()) // + .requireIssuer(this.authProperty.getJwt().getIssuer()) // + .parseClaimsJws(accessToken) // + .getBody() // + .getSubject(); + + return this.userRepository.selectById(subject) // + .orElseThrow(() -> new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)); + } catch (final Exception ignored) { + throw new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN); + } + } + +} diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 7ebc89ee..ef6ab490 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -85,32 +85,62 @@ type Mutation { 入力時間 [s] """ inputTime: Int! + + """ + アクセストークン + """ + accessToken: String! ): Timer! """ タイマー再開API """ - resumeTimer: Timer! + resumeTimer( + """ + アクセストークン + """ + accessToken: String! + ): Timer! """ タイマー一時停止API """ - pauseTimer: Timer! + pauseTimer( + """ + アクセストークン + """ + accessToken: String! + ): Timer! """ タイマーリセットAPI """ - resetTimer: Timer! + resetTimer( + """ + アクセストークン + """ + accessToken: String! + ): Timer! """ スライドを進めるAPI """ - goNextSlide: SlideControl! + goNextSlide( + """ + アクセストークン + """ + accessToken: String! + ): SlideControl! """ スライドを戻すAPI """ - goPreviousSlide: SlideControl! + goPreviousSlide( + """ + アクセストークン + """ + accessToken: String! + ): SlideControl! """ ポインター操作API @@ -130,12 +160,22 @@ type Mutation { γ値 """ gamma: Float, + + """ + アクセストークン + """ + accessToken: String! ): PointerControl! """ ポインター切断API """ - disconnectPointer: User! + disconnectPointer( + """ + アクセストークン + """ + accessToken: String! + ): User! """ カスタムポインター削除API diff --git a/app/src/main/resources/i18n/messages.yml b/app/src/main/resources/i18n/messages.yml index 14f35628..6c8814a1 100644 --- a/app/src/main/resources/i18n/messages.yml +++ b/app/src/main/resources/i18n/messages.yml @@ -11,6 +11,7 @@ exception: unauthorized: user_not_logged_in: ユーザはログインしていません。 incorrect_room_passcode: パスコードが間違えています。 + invalid_access_token: 不正なアクセストークンです。 forbidden: user_has_no_permission: その動作は許可されていません。 not_found: diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy index 025b226d..800ab7c4 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/AbstractController_IT.groovy @@ -153,36 +153,27 @@ abstract class AbstractController_IT extends AbstractDatabaseSpecification { } /** - * GraphQL(over WebSocket)を開始 + * アクセストークンを取得 * - * @param user ユーザ + * @param loginUser ログインユーザ + * @return アクセストークン */ - protected void connectWebSocketGraphQL(final UserModel user) { - final var jwt = Jwts.builder() - .setSubject(user.id) + protected String getAccessToken(final UserModel loginUser) { + return Jwts.builder() + .setSubject(loginUser.id) .setIssuer(this.authProperty.getJwt().getIssuer()) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() + this.authProperty.getTtl() * 1000)) .signWith(SignatureAlgorithm.HS512, this.authProperty.getJwt().getSecret().getBytes()) .compact() - this.webSocketGraphQlTester = WebSocketGraphQlTester - .builder("ws://localhost:${PORT}/graphql-ws", new ReactorNettyWebSocketClient()) - .header("Authorization", "Bearer " + jwt) - .build() } + def setup() { + StepVerifier.setDefaultTimeout(Duration.ofSeconds(5)) - /** - * GraphQL(over WebSocket)を開始 - */ - protected void connectWebSocketGraphQL() { this.webSocketGraphQlTester = WebSocketGraphQlTester .builder("ws://localhost:${PORT}/graphql-ws", new ReactorNettyWebSocketClient()) .build() } - def setup() { - StepVerifier.setDefaultTimeout(Duration.ofSeconds(5)) - } - } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy index e7cf8c86..0f3aa8f2 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy @@ -40,13 +40,13 @@ class PointerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) when: final query = """ mutation { - movePointer(alpha: 1.0, beta: 2.0, gamma: 3.0) { + movePointer(alpha: 1.0, beta: 2.0, gamma: 3.0, accessToken: "${accessToken}") { user { id name @@ -90,13 +90,12 @@ class PointerController_IT extends AbstractController_IT { } // @formatter:on - this.connectWebSocketGraphQL() expect: final query = """ mutation { - movePointer(alpha: 1.0, beta: 2.0, gamma: 3.0) { + movePointer(alpha: 1.0, beta: 2.0, gamma: 3.0, accessToken: "") { user { id name @@ -109,7 +108,7 @@ class PointerController_IT extends AbstractController_IT { } } """ - this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)) } def "ポインター切断API: 正常系 ポインターを切断する"() { @@ -122,13 +121,13 @@ class PointerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) when: final query = """ mutation { - disconnectPointer { + disconnectPointer(accessToken: "${accessToken}") { id name } @@ -157,22 +156,21 @@ class PointerController_IT extends AbstractController_IT { } // @formatter:on - this.connectWebSocketGraphQL() expect: final query = """ mutation { - disconnectPointer { + disconnectPointer(accessToken: "") { id name } } """ - this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)) } - def "ポインター操作購読API: ポインターを購読できる"() { + def "ポインター操作購読API: 正常系 ポインターを購読できる"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -183,7 +181,6 @@ class PointerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) final query = """ subscription { @@ -227,7 +224,7 @@ class PointerController_IT extends AbstractController_IT { .verify() } - def "ポインター切断イベント購読API: ポインター切断イベントを購読できる"() { + def "ポインター切断イベント購読API: 正常系 ポインター切断イベントを購読できる"() { given: // @formatter:off TableHelper.insert sql, "room", { @@ -238,7 +235,6 @@ class PointerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) final query = """ subscription { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy index 8e9d1ecd..c9a0569e 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/SlideController_IT.groovy @@ -32,13 +32,13 @@ class SlideController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) when: final query = """ mutation { - goNextSlide + goNextSlide(accessToken: "${accessToken}") } """ final response = this.executeWebSocket(query, "goNextSlide", SlideControl) @@ -61,16 +61,14 @@ class SlideController_IT extends AbstractController_IT { } // @formatter:on - this.connectWebSocketGraphQL() - expect: final query = """ mutation { - goNextSlide + goNextSlide(accessToken: "") } """ - this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)) } def "スライドを戻すAPI: 正常系 スライドを戻す"() { @@ -83,13 +81,13 @@ class SlideController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) when: final query = """ mutation { - goPreviousSlide + goPreviousSlide(accessToken: "${accessToken}") } """ final response = this.executeWebSocket(query, "goPreviousSlide", SlideControl) @@ -112,16 +110,15 @@ class SlideController_IT extends AbstractController_IT { } // @formatter:on - this.connectWebSocketGraphQL() expect: final query = """ mutation { - goPreviousSlide + goPreviousSlide(accessToken: "") } """ - this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)) } def "スライド操作購読API: 正常系 スライド操作を購読できる"() { @@ -135,7 +132,6 @@ class SlideController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) final query = """ subscription { @@ -168,7 +164,6 @@ class SlideController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) final query = """ subscription { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy index e170d6e4..bd580a8c 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -116,13 +116,13 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) when: final query = """ mutation { - startTimer(inputTime: ${inputTime}) { + startTimer(inputTime: ${inputTime}, accessToken: "${accessToken}") { inputTime remainingTimeAtPaused finishAt @@ -167,13 +167,13 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) expect: final query = """ mutation { - startTimer(inputTime: ${inputTime}) { + startTimer(inputTime: ${inputTime}, accessToken: "${accessToken}") { inputTime remainingTimeAtPaused finishAt @@ -203,13 +203,13 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) expect: final query = """ mutation { - startTimer(inputTime: 100) { + startTimer(inputTime: 100, accessToken: "${accessToken}") { inputTime remainingTimeAtPaused finishAt @@ -238,13 +238,12 @@ class TimerController_IT extends AbstractController_IT { } // @formatter:on - this.connectWebSocketGraphQL() expect: final query = """ mutation { - startTimer(inputTime: 100) { + startTimer(inputTime: 100, accessToken: "") { inputTime remainingTimeAtPaused finishAt @@ -252,7 +251,7 @@ class TimerController_IT extends AbstractController_IT { } } """ - this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)) } def "タイマー再開API: 正常系 一時停止中のタイマーを再開できる"() { @@ -269,13 +268,13 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) when: final query = """ mutation { - resumeTimer { + resumeTimer(accessToken: "${accessToken}") { inputTime remainingTimeAtPaused finishAt @@ -317,13 +316,13 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) expect: final query = """ mutation { - resumeTimer { + resumeTimer(accessToken: "${accessToken}") { inputTime remainingTimeAtPaused finishAt @@ -352,13 +351,12 @@ class TimerController_IT extends AbstractController_IT { } // @formatter:on - this.connectWebSocketGraphQL() expect: final query = """ mutation { - resumeTimer { + resumeTimer(accessToken: "") { inputTime remainingTimeAtPaused finishAt @@ -366,7 +364,7 @@ class TimerController_IT extends AbstractController_IT { } } """ - this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)) } def "タイマー一時停止API: 正常系 実行中のタイマーを一時停止できる"() { @@ -383,13 +381,13 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) when: final query = """ mutation { - pauseTimer { + pauseTimer(accessToken: "${accessToken}") { inputTime remainingTimeAtPaused finishAt @@ -431,13 +429,13 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) expect: final query = """ mutation { - pauseTimer { + pauseTimer(accessToken: "${accessToken}") { inputTime remainingTimeAtPaused finishAt @@ -466,13 +464,12 @@ class TimerController_IT extends AbstractController_IT { } // @formatter:on - this.connectWebSocketGraphQL() expect: final query = """ mutation { - pauseTimer { + pauseTimer(accessToken: "") { inputTime remainingTimeAtPaused finishAt @@ -480,7 +477,7 @@ class TimerController_IT extends AbstractController_IT { } } """ - this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)) } def "タイマーリセットAPI: 正常系 準備中以外のタイマーをリセットできる"() { @@ -497,13 +494,13 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) when: final query = """ mutation { - resetTimer { + resetTimer(accessToken: "${accessToken}") { inputTime remainingTimeAtPaused finishAt @@ -551,13 +548,13 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) + final accessToken = this.getAccessToken(loginUser) expect: final query = """ mutation { - resetTimer { + resetTimer(accessToken: "${accessToken}") { inputTime remainingTimeAtPaused finishAt @@ -581,13 +578,12 @@ class TimerController_IT extends AbstractController_IT { } // @formatter:on - this.connectWebSocketGraphQL() expect: final query = """ mutation { - resetTimer { + resetTimer(accessToken: "") { inputTime remainingTimeAtPaused finishAt @@ -595,7 +591,7 @@ class TimerController_IT extends AbstractController_IT { } } """ - this.executeWebSocket(query, new UnauthorizedException(ErrorCode.USER_NOT_LOGGED_IN)) + this.executeWebSocket(query, new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)) } def "タイマー購読API: 正常系 タイマー変更イベントを購読できる"() { @@ -612,7 +608,6 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) final query = """ subscription { @@ -659,7 +654,6 @@ class TimerController_IT extends AbstractController_IT { // @formatter:on final loginUser = this.login("00000000-0000-0000-0000-000000000000") - this.connectWebSocketGraphQL(loginUser) final query = """ subscription { From 36929d1e201b1eac06e52cedd222f56706d872a1 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 20:28:35 +0900 Subject: [PATCH 125/189] =?UTF-8?q?[feat]=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E5=90=8D=E3=81=AE=E9=87=8D=E8=A4=87=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=92=E8=A1=8C=E3=82=8F=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/user/JoinRoomUseCase.java | 1 - .../db/migration/V1_1_3__alter_user.sql | 2 ++ .../api/controller/UserController_IT.groovy | 31 ------------------- .../usecase/user/JoinRoomUseCase_UT.groovy | 1 - 4 files changed, 2 insertions(+), 33 deletions(-) create mode 100644 app/src/main/resources/db/migration/V1_1_3__alter_user.sql diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java index 19982796..7fb30649 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java @@ -54,7 +54,6 @@ public AccessToken handle(final String roomId, final String passcode, final Stri // ユーザ名チェック this.userService.checkIsNameValid(userName); - this.userService.checkIsNameAlreadyUsed(roomId, userName); // ユーザを作成 final var user = UserModel.builder() // diff --git a/app/src/main/resources/db/migration/V1_1_3__alter_user.sql b/app/src/main/resources/db/migration/V1_1_3__alter_user.sql new file mode 100644 index 00000000..285c9f56 --- /dev/null +++ b/app/src/main/resources/db/migration/V1_1_3__alter_user.sql @@ -0,0 +1,2 @@ +ALTER TABLE `user` + DROP INDEX `room_id_and_name_UNIQUE`; \ No newline at end of file diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy index eddbeb76..4ef07db2 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy @@ -195,35 +195,4 @@ class UserController_IT extends AbstractController_IT { this.executeHttp(query, new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE)) } - def "ルーム入室API: 異常系 ユーザ名が既に使われている場合は400エラー"() { - given: - final roomId = RandomHelper.uuid() - final roomPasscode = RandomHelper.numeric(6) - final userName = RandomHelper.alphanumeric(10) - - // @formatter:off - TableHelper.insert sql, "room", { - id | passcode - roomId | roomPasscode - } - TableHelper.insert sql, "user", { - room_id | name - roomId | userName - } - // @formatter:on - - expect: - final query = - """ - mutation { - joinRoom(roomId: "${roomId}", passcode: "${roomPasscode}", userName: "${userName}") { - tokenType - accessToken - ttl - } - } - """ - this.executeHttp(query, new BadRequestException(ErrorCode.USER_NAME_IS_ALREADY_EXISTS)) - } - } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase_UT.groovy index 210d3cd6..ddcc52d9 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase_UT.groovy @@ -34,7 +34,6 @@ class JoinRoomUseCase_UT extends AbstractUseCase_UT { 1 * this.roomRepository.selectById(room.id) >> Optional.of(room) 1 * room.isPasscodeValid(passcode) >> true 1 * this.userService.checkIsNameValid(userName) >> {} - 1 * this.userService.checkIsNameAlreadyUsed(room.id, userName) >> {} 1 * this.userRepository.insert(_) result.tokenType == this.authProperty.tokenType result.ttl == this.authProperty.ttl From 06d90f91de43eff7b1703fd077cf465d4b48bd69 Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 20:45:22 +0900 Subject: [PATCH 126/189] =?UTF-8?q?[feat]=20WebSocket=E5=88=87=E6=96=AD?= =?UTF-8?q?=E6=99=82=E3=81=AB=E3=83=A6=E3=83=BC=E3=82=B6=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...SocketGraphQLAuthenticationInterceptor.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java index 306e4bb2..36537ea5 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java @@ -1,16 +1,18 @@ package dev.abelab.smartpointer.infrastructure.api; +import java.util.LinkedHashMap; import java.util.Map; -import java.util.Objects; import org.springframework.graphql.server.WebGraphQlRequest; import org.springframework.graphql.server.WebGraphQlResponse; import org.springframework.graphql.server.WebSocketGraphQlInterceptor; import org.springframework.graphql.server.WebSocketSessionInfo; +import org.springframework.http.HttpHeaders; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; import dev.abelab.smartpointer.domain.repository.UserRepository; +import dev.abelab.smartpointer.util.AuthUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import reactor.core.publisher.Mono; @@ -25,6 +27,8 @@ public class WebSocketGraphQLAuthenticationInterceptor implements WebSocketGraph private final UserRepository userRepository; + private final AuthUtil authUtil; + @Override public Mono intercept(final WebGraphQlRequest request, final Chain chain) { if (request.getVariables().isEmpty()) { @@ -47,11 +51,13 @@ public Mono handleConnectionInitialization(final WebSocketSessionInfo se @Override public void handleConnectionClosed(final WebSocketSessionInfo sessionInfo, final int statusCode, final Map connectionInitPayload) { - final var authentication = SecurityContextHolder.getContext().getAuthentication(); - if (Objects.nonNull(authentication)) { - log.info(String.format("%d: GraphQL connection closed [user=%s]", statusCode, authentication.getName())); - this.userRepository.deleteById(authentication.getName()); - } else { + try { + final var headers = (LinkedHashMap) connectionInitPayload.get("headers"); + final var authorization = headers.get(HttpHeaders.AUTHORIZATION); + final var loginUser = this.authUtil.getLoginUser(authorization.replace("Bearer ", "")); + log.info(String.format("%d: GraphQL connection closed [name=%s, id=%s]", statusCode, loginUser.getName(), loginUser.getId())); + this.userRepository.deleteById(loginUser.getId()); + } catch (final Exception ignored) { log.info(String.format("%d: GraphQL connection closed", statusCode)); } WebSocketGraphQlInterceptor.super.handleConnectionClosed(sessionInfo, statusCode, connectionInitPayload); From 814df67f8f317c4f1aacfc8833768c51bd16946f Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Fri, 11 Nov 2022 21:06:47 +0900 Subject: [PATCH 127/189] =?UTF-8?q?=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF?= =?UTF-8?q?=E3=83=BC=E3=82=92=E9=81=B8=E6=8A=9E=E3=81=99=E3=82=8BUI?= =?UTF-8?q?=E3=82=92=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/pointer/src/components/Pointer.tsx | 225 +++++++++++++++--- app/src/main/pointer/src/gql/graphql.ts | 25 ++ 2 files changed, 217 insertions(+), 33 deletions(-) diff --git a/app/src/main/pointer/src/components/Pointer.tsx b/app/src/main/pointer/src/components/Pointer.tsx index 9c1ca97c..c00e64ba 100644 --- a/app/src/main/pointer/src/components/Pointer.tsx +++ b/app/src/main/pointer/src/components/Pointer.tsx @@ -1,4 +1,25 @@ -import { IconButton, Icon, Flex, Box, Heading, VStack } from "@chakra-ui/react"; +import { + Icon, + Flex, + VStack, + Button, + useDisclosure, + IconProps, + Modal, + ModalOverlay, + ModalContent, + ModalHeader, + ModalBody, + ModalCloseButton, + Center, + IconButton, + HStack, + Spacer, + Image, + ChakraProps, + useToken, +} from "@chakra-ui/react"; +import { ArrowPathIcon } from "@heroicons/react/24/solid"; import { FC, useEffect, useState } from "react"; import { @@ -12,9 +33,120 @@ type Props = { authData: AuthData; }; +export type BuiltInPointerType = { + id: "SPOTLIGHT" | "ARROW" | "FINGER"; + label: string; +}; + +export type CustomPointerType = { + id: string; + label: string; + url?: string; +}; + +export type PointerType = BuiltInPointerType | CustomPointerType; + +export const builtInPointers: PointerType[] = [ + { + id: "SPOTLIGHT", + label: "スポットライト", + }, + { + id: "ARROW", + label: "矢印", + }, + { + id: "FINGER", + label: "人差し指", + }, +]; + +/** + * + * @see https://gist.github.com/0x263b/2bdd90886c2036a1ad5bcf06d6e6fb37 + */ +function randomColorFromList(str: string, list: string[]): string { + let index = 0; + if (str.length === 0) return list[0]!; + for (let i = 0; i < str.length; i += 1) { + index = str.charCodeAt(i) + ((index << 5) - index); + index = index & index; + } + index = ((index % list.length) + list.length) % list.length; + return list[index]!; +} + +const SpotLightIcon: FC = (props) => ( + + + +); + +const ArrowIcon: FC = (props) => ( + + + +); + +const FingerIcon: FC = (props) => ( + + + +); + +const PointerIcon: FC<{ pointer: PointerType } & ChakraProps> = ({ + pointer, + ...props +}) => { + switch (pointer.id) { + case "SPOTLIGHT": { + return ; + } + case "ARROW": { + return ; + } + case "FINGER": { + return ; + } + default: { + return ; + } + } +}; + export const Pointer: FC = ({ authData }) => { + const { isOpen, onOpen, onClose } = useDisclosure(); const [isActive, setIsActive] = useState(false); + // TODO: get from sever, set to server + const [pointerType, setPointerType] = useState( + builtInPointers[0] + ); + + const colors = useToken("colors", [ + "gray.500", + "red.500", + "orange.500", + "yellow.500", + "green.500", + "teal.500", + "blue.500", + "cyan.500", + "purple.500", + "pink.500", + ]); + + // TODO: get color from authData + const color = randomColorFromList("useId", colors); + useEffect(() => { if (!isActive) { return; @@ -27,37 +159,64 @@ export const Pointer: FC = ({ authData }) => { }, [authData.roomId, isActive]); return ( - - - setIsActive(true)} - onMouseUp={() => setIsActive(false)} - onTouchStart={() => setIsActive(true)} - onTouchEnd={() => setIsActive(false)} - icon={ - - - - } - /> - - + + + + + + } + aria-label="ポインターを切り替える" + borderRadius="full" + onClick={onOpen} + /> + + + + + + ポインター切り替え + + + + {builtInPointers.map((pointer) => ( + + ))} + + + + + ); }; diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index f4cdf9e7..cee3299b 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -25,6 +25,24 @@ export type AccessToken = { ttl: Scalars['Int']; }; +/** カスタムポインター */ +export type CustomPointer = { + __typename?: 'CustomPointer'; + /** カスタムポインターID */ + id: Scalars['ID']; + /** ラベル */ + label: Scalars['String']; + /** URL */ + url: Scalars['String']; +}; + +/** カスタムポインターリスト */ +export type CustomPointers = { + __typename?: 'CustomPointers'; + /** カスタムポインターリスト */ + customPointers: Array; +}; + export type Mutation = { __typename?: 'Mutation'; /** ルーム作成API */ @@ -97,6 +115,8 @@ export type PointerControlOrientation = { export type Query = { __typename?: 'Query'; + /** カスタムポインターリスト取得API */ + getCustomPointers: CustomPointers; /** タイマー取得API */ getTimer: Timer; /** ユーザリスト取得API */ @@ -106,6 +126,11 @@ export type Query = { }; +export type QueryGetCustomPointersArgs = { + roomId: Scalars['ID']; +}; + + export type QueryGetTimerArgs = { roomId: Scalars['ID']; }; From 4a5d26cf99a57620d42fd83003d38e16f2fcc6c4 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 07:55:54 +0900 Subject: [PATCH 128/189] fix codegen script --- app/src/main/pointer/package.json | 2 +- desktop/package.json | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/pointer/package.json b/app/src/main/pointer/package.json index eba3b869..a2b16d8b 100644 --- a/app/src/main/pointer/package.json +++ b/app/src/main/pointer/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "dev:serve": "vite --host", - "dev": "run-p dev:* codegen", + "dev": "run-p codegen:watch dev:*", "build": "tsc && vite build", "preview": "vite preview", "codegen": "gql-gen --config graphql.config.ts", diff --git a/desktop/package.json b/desktop/package.json index e4e1749f..be849973 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -7,9 +7,11 @@ "description": "手元のスマホをリモコン化する、共同プレゼンテーション支援ツール", "scripts": { "generate-electron-vendors": "cross-env ELECTRON_RUN_AS_NODE=1 electron --experimental-loader ts-node/esm scripts/generate-electron-vendors.mts", - "dev": "node --experimental-loader ts-node/esm scripts/watch.mts", + "dev:build": "node --experimental-loader ts-node/esm scripts/watch.mts", + "dev": "run-p codegen dev:*", "build": "npm run build -ws --if-present", "codegen": "npm run codegen -ws --if-present --", + "codgen:watch": "npm run codegen -- watch", "lint": "eslint . --ext .ts,.tsx,mts", "format": "npm run check:format --write", "check:format": "prettier . --check", From b11ac8243c86db03b0ecd8a6a71a93cd11e57d99 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 07:56:31 +0900 Subject: [PATCH 129/189] send pagenation mutation from pointer --- app/src/main/pointer/src/api.ts | 1 + .../main/pointer/src/components/Paginator.tsx | 62 +++++++++++++++---- app/src/main/pointer/src/gql/gql.ts | 4 ++ app/src/main/pointer/src/gql/graphql.ts | 58 ++++++++++++++++- app/src/main/pointer/src/types/AuthData.ts | 4 +- 5 files changed, 115 insertions(+), 14 deletions(-) diff --git a/app/src/main/pointer/src/api.ts b/app/src/main/pointer/src/api.ts index 5f43b889..044cbd2b 100644 --- a/app/src/main/pointer/src/api.ts +++ b/app/src/main/pointer/src/api.ts @@ -39,6 +39,7 @@ export const initializeWsClient = (accessToken: string) => { Authorization: `Bearer ${accessToken}`, }, }, + lazy: false, }); }; diff --git a/app/src/main/pointer/src/components/Paginator.tsx b/app/src/main/pointer/src/components/Paginator.tsx index 83a515d3..a5445ef2 100644 --- a/app/src/main/pointer/src/components/Paginator.tsx +++ b/app/src/main/pointer/src/components/Paginator.tsx @@ -1,29 +1,67 @@ -import { IconButton, Icon, Flex } from "@chakra-ui/react"; +import { IconButton, Icon, Flex, useToast } from "@chakra-ui/react"; import { ChevronLeftIcon, ChevronRightIcon } from "@heroicons/react/24/solid"; +import { Sink } from "graphql-ws"; import { FC } from "react"; -// import { stompClient } from "@/stomp"; +import { requestWs } from "@/api"; +import { graphql } from "@/gql"; import { AuthData } from "@/types/AuthData"; type Props = { authData: AuthData; }; +// eslint-disable-next-line @typescript-eslint/no-empty-function +const noop = () => {}; + export const Paginator: FC = ({ authData }) => { + const toast = useToast(); + + const emptySink: Sink = { + next: noop, + complete: noop, + error(error) { + if (!(error instanceof Error)) { + throw error; + } + toast({ + status: "error", + title: "エラーが発生しました", + description: error.message, + }); + }, + }; + const goNext = () => { - // TODO: GraphQL 移行 - // stompClient.publish({ - // destination: `/app/rooms/${authData.roomId}/slides/next`, - // body: JSON.stringify({ room_id: authData.roomId }), - // }); + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation GoNextSlide($accessToken: String!) { + goNextSlide(accessToken: $accessToken) + } + `), + variables: { + accessToken: authData.accessToken, + }, + }, + emptySink + ); }; const goPrevious = () => { - // TODO: GraphQL 移行 - // stompClient.publish({ - // destination: `/app/rooms/${authData.roomId}/slides/previous`, - // body: JSON.stringify({ room_id: authData.roomId }), - // }); + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation GoPreviousSlide($accessToken: String!) { + goPreviousSlide(accessToken: $accessToken) + } + `), + variables: { + accessToken: authData.accessToken, + }, + }, + emptySink + ); }; return ( diff --git a/app/src/main/pointer/src/gql/gql.ts b/app/src/main/pointer/src/gql/gql.ts index c0344c82..3288f357 100644 --- a/app/src/main/pointer/src/gql/gql.ts +++ b/app/src/main/pointer/src/gql/gql.ts @@ -4,9 +4,13 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ const documents = { "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n ": types.JoinRoomDocument, + "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n ": types.GoNextSlideDocument, + "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n ": types.GoPreviousSlideDocument, }; export function graphql(source: "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "): (typeof documents)["\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "]; +export function graphql(source: "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "]; +export function graphql(source: "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "]; export function graphql(source: string): unknown; export function graphql(source: string) { diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index cee3299b..68a3d30b 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -47,6 +47,8 @@ export type Mutation = { __typename?: 'Mutation'; /** ルーム作成API */ createRoom: Room; + /** カスタムポインター削除API */ + deleteCustomPointer: Scalars['ID']; /** ルーム削除API */ deleteRoom: Scalars['ID']; /** ポインター切断API */ @@ -70,11 +72,32 @@ export type Mutation = { }; +export type MutationDeleteCustomPointerArgs = { + id: Scalars['ID']; + roomId: Scalars['ID']; +}; + + export type MutationDeleteRoomArgs = { roomId: Scalars['ID']; }; +export type MutationDisconnectPointerArgs = { + accessToken: Scalars['String']; +}; + + +export type MutationGoNextSlideArgs = { + accessToken: Scalars['String']; +}; + + +export type MutationGoPreviousSlideArgs = { + accessToken: Scalars['String']; +}; + + export type MutationJoinRoomArgs = { passcode: Scalars['String']; roomId: Scalars['ID']; @@ -83,13 +106,30 @@ export type MutationJoinRoomArgs = { export type MutationMovePointerArgs = { + accessToken: Scalars['String']; alpha?: InputMaybe; beta?: InputMaybe; gamma?: InputMaybe; }; +export type MutationPauseTimerArgs = { + accessToken: Scalars['String']; +}; + + +export type MutationResetTimerArgs = { + accessToken: Scalars['String']; +}; + + +export type MutationResumeTimerArgs = { + accessToken: Scalars['String']; +}; + + export type MutationStartTimerArgs = { + accessToken: Scalars['String']; inputTime: Scalars['Int']; }; @@ -244,5 +284,21 @@ export type JoinRoomMutationVariables = Exact<{ export type JoinRoomMutation = { __typename?: 'Mutation', joinRoom: { __typename?: 'AccessToken', tokenType: string, accessToken: string, ttl: number } }; +export type GoNextSlideMutationVariables = Exact<{ + accessToken: Scalars['String']; +}>; + + +export type GoNextSlideMutation = { __typename?: 'Mutation', goNextSlide: SlideControl }; + +export type GoPreviousSlideMutationVariables = Exact<{ + accessToken: Scalars['String']; +}>; + + +export type GoPreviousSlideMutation = { __typename?: 'Mutation', goPreviousSlide: SlideControl }; + -export const JoinRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"JoinRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"joinRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"passcode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}}},{"kind":"Argument","name":{"kind":"Name","value":"userName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tokenType"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"ttl"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file +export const JoinRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"JoinRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"joinRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"passcode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}}},{"kind":"Argument","name":{"kind":"Name","value":"userName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tokenType"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"ttl"}}]}}]}}]} as unknown as DocumentNode; +export const GoNextSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoNextSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goNextSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; +export const GoPreviousSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoPreviousSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goPreviousSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/app/src/main/pointer/src/types/AuthData.ts b/app/src/main/pointer/src/types/AuthData.ts index 8708f338..92c51a5b 100644 --- a/app/src/main/pointer/src/types/AuthData.ts +++ b/app/src/main/pointer/src/types/AuthData.ts @@ -1,7 +1,9 @@ +import { AccessToken } from "@/gql/graphql"; + /** * ログインユーザ */ -export type AuthData = { +export type AuthData = AccessToken & { userName: string; roomId: string; }; From 7c414acc393974fbf6180062f63e5d2abfa90364 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 07:57:36 +0900 Subject: [PATCH 130/189] subscribe pagenation from desktop --- desktop/packages/main/src/api.ts | 1 + desktop/packages/main/src/controller/index.ts | 46 +++++++--- desktop/packages/main/src/gql/gql.ts | 2 + desktop/packages/main/src/gql/graphql.ts | 84 ++++++++++++++++++- 4 files changed, 119 insertions(+), 14 deletions(-) diff --git a/desktop/packages/main/src/api.ts b/desktop/packages/main/src/api.ts index b9b8d45f..a35125ef 100644 --- a/desktop/packages/main/src/api.ts +++ b/desktop/packages/main/src/api.ts @@ -45,6 +45,7 @@ export const initializeWsClient = () => { graphqlWsClient = createClient({ url: graphqlWsEndpoint, webSocketImpl: WebSocket, + lazy: false, }); }; diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 6d395701..bef91488 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -7,14 +7,10 @@ import { import { randomUUID } from "crypto"; import { screen } from "electron"; -import { requestHttp } from "@/api"; +import { initializeWsClient, requestHttp, requestWs } from "@/api"; import { graphql } from "@/gql"; import { model } from "@/model"; -// import { -// activate, -// listenRoomSubscription, -// unsubscribeRoomSubscription, -// } from "@/stomp"; +import { goNext, goPrevious } from "@/pagination"; import { store } from "@/store"; import { view } from "@/view"; @@ -71,15 +67,41 @@ export const controller = { console.log("created room", data.createRoom); - // TODO: GraphQL 移行 - // await activate(); + initializeWsClient(); - console.log("before", model.state); model.createdRoom(data.createRoom, screen.getPrimaryDisplay().id); - console.log("after", model.state); - // TODO: GraphQL 移行 - // listenRoomSubscription(data.createRoom.id); + requestWs( + { + query: graphql(/* GraphQL */ ` + subscription SubscribeToSlideControl($roomId: ID!) { + subscribeToSlideControl(roomId: $roomId) + } + `), + variables: { + roomId: data.createRoom.id, + }, + }, + { + next({ data }) { + if (data) { + switch (data.subscribeToSlideControl) { + case "NEXT": { + goNext(); + return; + } + case "PREVIOUS": { + goPrevious(); + } + } + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + error() {}, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete() {}, + } + ); view.tray.update(); await view.window.pointerOverlay.show(); diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts index 22cb79e7..7f07d2fb 100644 --- a/desktop/packages/main/src/gql/gql.ts +++ b/desktop/packages/main/src/gql/gql.ts @@ -4,9 +4,11 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ const documents = { "\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n ": types.CreateRoomDocument, + "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n ": types.SubscribeToSlideControlDocument, }; export function graphql(source: "\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "): (typeof documents)["\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "]; +export function graphql(source: "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "]; export function graphql(source: string): unknown; export function graphql(source: string) { diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index c835f34d..d1a827e0 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -25,14 +25,34 @@ export type AccessToken = { ttl: Scalars['Int']; }; +/** カスタムポインター */ +export type CustomPointer = { + __typename?: 'CustomPointer'; + /** カスタムポインターID */ + id: Scalars['ID']; + /** ラベル */ + label: Scalars['String']; + /** URL */ + url: Scalars['String']; +}; + +/** カスタムポインターリスト */ +export type CustomPointers = { + __typename?: 'CustomPointers'; + /** カスタムポインターリスト */ + customPointers: Array; +}; + export type Mutation = { __typename?: 'Mutation'; /** ルーム作成API */ createRoom: Room; + /** カスタムポインター削除API */ + deleteCustomPointer: Scalars['ID']; /** ルーム削除API */ deleteRoom: Scalars['ID']; /** ポインター切断API */ - disconnectPointer: PointerControl; + disconnectPointer: User; /** スライドを進めるAPI */ goNextSlide: SlideControl; /** スライドを戻すAPI */ @@ -52,11 +72,32 @@ export type Mutation = { }; +export type MutationDeleteCustomPointerArgs = { + id: Scalars['ID']; + roomId: Scalars['ID']; +}; + + export type MutationDeleteRoomArgs = { roomId: Scalars['ID']; }; +export type MutationDisconnectPointerArgs = { + accessToken: Scalars['String']; +}; + + +export type MutationGoNextSlideArgs = { + accessToken: Scalars['String']; +}; + + +export type MutationGoPreviousSlideArgs = { + accessToken: Scalars['String']; +}; + + export type MutationJoinRoomArgs = { passcode: Scalars['String']; roomId: Scalars['ID']; @@ -64,7 +105,31 @@ export type MutationJoinRoomArgs = { }; +export type MutationMovePointerArgs = { + accessToken: Scalars['String']; + alpha?: InputMaybe; + beta?: InputMaybe; + gamma?: InputMaybe; +}; + + +export type MutationPauseTimerArgs = { + accessToken: Scalars['String']; +}; + + +export type MutationResetTimerArgs = { + accessToken: Scalars['String']; +}; + + +export type MutationResumeTimerArgs = { + accessToken: Scalars['String']; +}; + + export type MutationStartTimerArgs = { + accessToken: Scalars['String']; inputTime: Scalars['Int']; }; @@ -90,6 +155,8 @@ export type PointerControlOrientation = { export type Query = { __typename?: 'Query'; + /** カスタムポインターリスト取得API */ + getCustomPointers: CustomPointers; /** タイマー取得API */ getTimer: Timer; /** ユーザリスト取得API */ @@ -99,6 +166,11 @@ export type Query = { }; +export type QueryGetCustomPointersArgs = { + roomId: Scalars['ID']; +}; + + export type QueryGetTimerArgs = { roomId: Scalars['ID']; }; @@ -208,5 +280,13 @@ export type CreateRoomMutationVariables = Exact<{ [key: string]: never; }>; export type CreateRoomMutation = { __typename?: 'Mutation', createRoom: { __typename?: 'Room', id: string, passcode: string } }; +export type SubscribeToSlideControlSubscriptionVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type SubscribeToSlideControlSubscription = { __typename?: 'Subscription', subscribeToSlideControl: SlideControl }; + -export const CreateRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"passcode"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file +export const CreateRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"passcode"}}]}}]}}]} as unknown as DocumentNode; +export const SubscribeToSlideControlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToSlideControl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToSlideControl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; \ No newline at end of file From c34f059040884c30aab1ec36f510df35139d354e Mon Sep 17 00:00:00 2001 From: averak Date: Fri, 11 Nov 2022 21:08:28 +0900 Subject: [PATCH 131/189] =?UTF-8?q?[feat]=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=88=E8=B3=BC=E8=AA=ADAPI=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 16 ++++++++-- .../domain/model/RoomUsersEventModel.java | 29 ++++++++++++++++++ .../domain/repository/UserRepository.java | 7 +++++ ...ocketGraphQLAuthenticationInterceptor.java | 6 ++++ .../api/controller/UserController.java | 30 ++++++++++++++++++- .../infrastructure/api/type/Users.java | 8 +++++ .../repository/UserRepositoryImpl.java | 8 +++++ .../main/resources/graphql/schema.graphqls | 2 +- .../repository/UserRepositoryImpl_UT.groovy | 23 ++++++++++++++ 9 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersEventModel.java diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java index 08fcb610..866b2c10 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -47,13 +47,23 @@ public Flux pointerControlFlux(final Sinks.Many pointerDisconnectSink() { + public Sinks.Many userSink() { return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); } @Bean - public Flux pointerDisconnectFlux(final Sinks.Many pointerDisconnectSink) { - return pointerDisconnectSink.asFlux(); + public Flux userFlux(final Sinks.Many userSink) { + return userSink.asFlux(); + } + + @Bean + public Sinks.Many roomUsersEventSink() { + return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); + } + + @Bean + public Flux roomUsersEventFlux(final Sinks.Many roomUsersEventSink) { + return roomUsersEventSink.asFlux(); } @Bean diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersEventModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersEventModel.java new file mode 100644 index 00000000..cf15b02d --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersEventModel.java @@ -0,0 +1,29 @@ +package dev.abelab.smartpointer.domain.model; + +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ルームユーザリストモデル + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class RoomUsersEventModel { + + /** + * ルームID + */ + String roomId; + + /** + * ユーザリスト + */ + List users; + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/repository/UserRepository.java b/app/src/main/java/dev/abelab/smartpointer/domain/repository/UserRepository.java index 75a4cd40..cc28ce55 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/repository/UserRepository.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/repository/UserRepository.java @@ -18,6 +18,13 @@ public interface UserRepository { */ Optional selectById(final String id); + /** + * ユーザリストを取得 + * + * @return ユーザリスト + */ + List selectAll(); + /** * ルームIDからユーザリストを取得 * diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java index 36537ea5..03abb5fa 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java @@ -11,11 +11,13 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; +import dev.abelab.smartpointer.domain.model.RoomUsersEventModel; import dev.abelab.smartpointer.domain.repository.UserRepository; import dev.abelab.smartpointer.util.AuthUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import reactor.core.publisher.Mono; +import reactor.core.publisher.Sinks; /** * GraphQL (over WebSocket) Authentication Interceptor @@ -25,6 +27,8 @@ @RequiredArgsConstructor public class WebSocketGraphQLAuthenticationInterceptor implements WebSocketGraphQlInterceptor { + private final Sinks.Many roomUsersEventSink; + private final UserRepository userRepository; private final AuthUtil authUtil; @@ -57,6 +61,8 @@ public void handleConnectionClosed(final WebSocketSessionInfo sessionInfo, final final var loginUser = this.authUtil.getLoginUser(authorization.replace("Bearer ", "")); log.info(String.format("%d: GraphQL connection closed [name=%s, id=%s]", statusCode, loginUser.getName(), loginUser.getId())); this.userRepository.deleteById(loginUser.getId()); + this.roomUsersEventSink + .tryEmitNext(new RoomUsersEventModel(loginUser.getRoomId(), this.userRepository.selectByRoomId(loginUser.getRoomId()))); } catch (final Exception ignored) { log.info(String.format("%d: GraphQL connection closed", statusCode)); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java index 3c738a71..3b7d3654 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java @@ -2,17 +2,22 @@ import java.util.stream.Collectors; +import org.reactivestreams.Publisher; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.graphql.data.method.annotation.SubscriptionMapping; import org.springframework.stereotype.Controller; +import dev.abelab.smartpointer.domain.model.RoomUsersEventModel; import dev.abelab.smartpointer.infrastructure.api.type.AccessToken; import dev.abelab.smartpointer.infrastructure.api.type.User; import dev.abelab.smartpointer.infrastructure.api.type.Users; import dev.abelab.smartpointer.usecase.user.GetUsersUseCase; import dev.abelab.smartpointer.usecase.user.JoinRoomUseCase; import lombok.RequiredArgsConstructor; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Sinks; /** * ユーザコントローラ @@ -21,6 +26,10 @@ @RequiredArgsConstructor public class UserController { + private final Sinks.Many roomUsersEventSink; + + private final Flux roomUsersEventFlux; + private final GetUsersUseCase getUsersUseCase; private final JoinRoomUseCase joinRoomUseCase; @@ -53,7 +62,26 @@ public AccessToken joinRoom( // @Argument final String passcode, // @Argument final String userName // ) { - return this.joinRoomUseCase.handle(roomId, passcode, userName); + final var accessToken = this.joinRoomUseCase.handle(roomId, passcode, userName); + final var users = this.getUsersUseCase.handle(roomId); + this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel(roomId, users)); + + return accessToken; + } + + /** + * ユーザリスト購読API + * + * @param roomId ルームID + * @return ユーザリスト + */ + @SubscriptionMapping + public Publisher subscribeToUsers( // + @Argument final String roomId // + ) { + return this.roomUsersEventFlux // + .filter(roomUsersEventModel -> roomUsersEventModel.getRoomId().equals(roomId)) // + .map(Users::new); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java index 1fcb8f8e..7912c960 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java @@ -1,7 +1,9 @@ package dev.abelab.smartpointer.infrastructure.api.type; import java.util.List; +import java.util.stream.Collectors; +import dev.abelab.smartpointer.domain.model.RoomUsersEventModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,4 +23,10 @@ public class Users { */ List users; + public Users(final RoomUsersEventModel roomUsersEventModel) { + this.users = roomUsersEventModel.getUsers().stream() // + .map(User::new) // + .collect(Collectors.toList()); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/UserRepositoryImpl.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/UserRepositoryImpl.java index 3ed969fe..98b5f929 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/UserRepositoryImpl.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/UserRepositoryImpl.java @@ -29,6 +29,14 @@ public Optional selectById(final String id) { return Optional.ofNullable(this.userMapper.selectByPrimaryKey(id)).map(UserModel::new); } + @Override + public List selectAll() { + final var example = new UserExample(); + return this.userMapper.selectByExample(example).stream() // + .map(UserModel::new) // + .collect(Collectors.toList()); + } + @Override public List selectByRoomId(final String roomId) { final var example = new UserExample(); diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index ef6ab490..37a69cbc 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -202,7 +202,7 @@ type Subscription { ルームID """ roomId: ID! - ): [User!]! + ): Users! """ タイマー購読API diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/UserRepositoryImpl_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/UserRepositoryImpl_UT.groovy index 10b09ae8..4562afee 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/UserRepositoryImpl_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/UserRepositoryImpl_UT.groovy @@ -57,6 +57,29 @@ class UserRepositoryImpl_UT extends AbstractRepository_UT { result.isEmpty() } + def "selectAll: ユーザリストを取得"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + "00000000-0000-0000-0000-000000000001" | "000000" + } + TableHelper.insert sql, "user", { + id | room_id | name + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "A" + "00000000-0000-0000-0000-000000000001" | "00000000-0000-0000-0000-000000000000" | "B" + "00000000-0000-0000-0000-000000000002" | "00000000-0000-0000-0000-000000000001" | "C" + } + // @formatter:on + + when: + final result = this.sut.selectAll() + + then: + result*.id == ["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000001", "00000000-0000-0000-0000-000000000002"] + } + def "selectByRoomId: ルームIDからユーザリストを取得"() { given: // @formatter:off From d975507bbc754e4e23988e98be11b6f47a4762bc Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 10:35:01 +0900 Subject: [PATCH 132/189] =?UTF-8?q?[test]=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=88=E8=B3=BC=E8=AA=ADAPI=E3=81=AE?= =?UTF-8?q?=E7=B5=B1=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/UserController_IT.groovy | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy index 4ef07db2..a2ba769a 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy @@ -1,5 +1,7 @@ package dev.abelab.smartpointer.infrastructure.api.controller +import dev.abelab.smartpointer.domain.model.RoomUsersEventModel +import dev.abelab.smartpointer.domain.model.UserModel import dev.abelab.smartpointer.exception.BadRequestException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException @@ -8,12 +10,22 @@ import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper import dev.abelab.smartpointer.infrastructure.api.type.AccessToken import dev.abelab.smartpointer.infrastructure.api.type.Users +import org.springframework.beans.factory.annotation.Autowired +import reactor.core.publisher.Flux +import reactor.core.publisher.Sinks +import reactor.test.StepVerifier /** * UserControllerの統合テスト */ class UserController_IT extends AbstractController_IT { + @Autowired + Sinks.Many roomUsersEventSink + + @Autowired + Flux roomUsersEventFlux + def "ユーザリスト取得API: 正常系 ユーザリストを取得する"() { given: // @formatter:off @@ -195,4 +207,42 @@ class UserController_IT extends AbstractController_IT { this.executeHttp(query, new UnauthorizedException(ErrorCode.INCORRECT_ROOM_PASSCODE)) } + def "ユーザリスト購読API: 正常系 ユーザリストを購読できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + "00000000-0000-0000-0000-000000000001" | "000000" + } + // @formatter:on + + final query = + """ + subscription { + subscribeToUsers(roomId: "00000000-0000-0000-0000-000000000000") { + users { + id + name + } + } + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToUsers", Users) + + when: + this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel("00000000-0000-0000-0000-000000000000", [RandomHelper.mock(UserModel), RandomHelper.mock(UserModel)])) + this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel("00000000-0000-0000-0000-000000000000", [RandomHelper.mock(UserModel)])) + this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel("00000000-0000-0000-0000-000000000000", [])) + this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel("00000000-0000-0000-0000-000000000001", [RandomHelper.mock(UserModel)])) + + then: + StepVerifier.create(response) + .expectNextMatches({ it.users.size() == 2 }) + .expectNextMatches({ it.users.size() == 1 }) + .expectNextMatches({ it.users.size() == 0 }) + .thenCancel() + .verify() + } + } From f99058f0d0a92fa9387707b35e3a17c9e2ea078b Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 10:48:41 +0900 Subject: [PATCH 133/189] =?UTF-8?q?[feat]=20=E3=82=AB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=A0=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=BC=E3=83=AA?= =?UTF-8?q?=E3=82=B9=E3=83=88=E8=B3=BC=E8=AA=ADAPI=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 14 ++++----- .../domain/model/RoomCustomPointersModel.java | 29 +++++++++++++++++++ ...ersEventModel.java => RoomUsersModel.java} | 2 +- ...ocketGraphQLAuthenticationInterceptor.java | 8 ++--- .../controller/CustomPointerController.java | 28 ++++++++++++++---- .../api/controller/UserController.java | 12 ++++---- .../api/type/CustomPointers.java | 8 +++++ .../infrastructure/api/type/Users.java | 6 ++-- .../main/resources/graphql/schema.graphqls | 10 +++++++ .../CustomPointerController_IT.groovy | 11 +++---- .../api/controller/UserController_IT.groovy | 14 ++++----- 11 files changed, 103 insertions(+), 39 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/model/RoomCustomPointersModel.java rename app/src/main/java/dev/abelab/smartpointer/domain/model/{RoomUsersEventModel.java => RoomUsersModel.java} (92%) diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java index 866b2c10..208bb131 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -1,7 +1,5 @@ package dev.abelab.smartpointer.config; -import java.util.List; - import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -57,23 +55,23 @@ public Flux userFlux(final Sinks.Many userSink) { } @Bean - public Sinks.Many roomUsersEventSink() { + public Sinks.Many roomUsersSink() { return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); } @Bean - public Flux roomUsersEventFlux(final Sinks.Many roomUsersEventSink) { - return roomUsersEventSink.asFlux(); + public Flux roomUsersFlux(final Sinks.Many roomUsersSink) { + return roomUsersSink.asFlux(); } @Bean - public Sinks.Many> customPointersSink() { + public Sinks.Many roomCustomPointersSink() { return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); } @Bean - public Flux> customPointersFlux(final Sinks.Many> customPointersSink) { - return customPointersSink.asFlux(); + public Flux roomCustomPointersFlux(final Sinks.Many roomCustomPointersSink) { + return roomCustomPointersSink.asFlux(); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomCustomPointersModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomCustomPointersModel.java new file mode 100644 index 00000000..adcd2c59 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomCustomPointersModel.java @@ -0,0 +1,29 @@ +package dev.abelab.smartpointer.domain.model; + +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ルームカスタムポインターリストモデル + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class RoomCustomPointersModel { + + /** + * ルームID + */ + String roomId; + + /** + * カスタムポインターリスト + */ + List customPointers; + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersEventModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersModel.java similarity index 92% rename from app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersEventModel.java rename to app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersModel.java index cf15b02d..e8e7a183 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersEventModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomUsersModel.java @@ -14,7 +14,7 @@ @Builder @AllArgsConstructor @NoArgsConstructor -public class RoomUsersEventModel { +public class RoomUsersModel { /** * ルームID diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java index 03abb5fa..d9b12be9 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/WebSocketGraphQLAuthenticationInterceptor.java @@ -11,7 +11,7 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; -import dev.abelab.smartpointer.domain.model.RoomUsersEventModel; +import dev.abelab.smartpointer.domain.model.RoomUsersModel; import dev.abelab.smartpointer.domain.repository.UserRepository; import dev.abelab.smartpointer.util.AuthUtil; import lombok.RequiredArgsConstructor; @@ -27,7 +27,7 @@ @RequiredArgsConstructor public class WebSocketGraphQLAuthenticationInterceptor implements WebSocketGraphQlInterceptor { - private final Sinks.Many roomUsersEventSink; + private final Sinks.Many roomUsersSink; private final UserRepository userRepository; @@ -61,8 +61,8 @@ public void handleConnectionClosed(final WebSocketSessionInfo sessionInfo, final final var loginUser = this.authUtil.getLoginUser(authorization.replace("Bearer ", "")); log.info(String.format("%d: GraphQL connection closed [name=%s, id=%s]", statusCode, loginUser.getName(), loginUser.getId())); this.userRepository.deleteById(loginUser.getId()); - this.roomUsersEventSink - .tryEmitNext(new RoomUsersEventModel(loginUser.getRoomId(), this.userRepository.selectByRoomId(loginUser.getRoomId()))); + this.roomUsersSink + .tryEmitNext(new RoomUsersModel(loginUser.getRoomId(), this.userRepository.selectByRoomId(loginUser.getRoomId()))); } catch (final Exception ignored) { log.info(String.format("%d: GraphQL connection closed", statusCode)); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java index cdcb6923..6f0097e1 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java @@ -1,14 +1,15 @@ package dev.abelab.smartpointer.infrastructure.api.controller; -import java.util.List; import java.util.stream.Collectors; +import org.reactivestreams.Publisher; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.graphql.data.method.annotation.SubscriptionMapping; import org.springframework.stereotype.Controller; -import dev.abelab.smartpointer.domain.model.CustomPointerModel; +import dev.abelab.smartpointer.domain.model.RoomCustomPointersModel; import dev.abelab.smartpointer.infrastructure.api.type.CustomPointer; import dev.abelab.smartpointer.infrastructure.api.type.CustomPointers; import dev.abelab.smartpointer.usecase.custom_pointer.DeleteCustomPointersUseCase; @@ -24,9 +25,9 @@ @RequiredArgsConstructor public class CustomPointerController { - private final Sinks.Many> customPointersSink; + private final Sinks.Many roomCustomPointersSink; - private final Flux> customPointersFlux; + private final Flux roomCustomPointersFlux; private final GetCustomPointersUseCase getCustomPointersUseCase; @@ -61,9 +62,26 @@ public String deleteCustomPointer( // @Argument final String roomId // ) { this.deleteCustomPointersUseCase.handle(id, roomId); - this.customPointersSink.tryEmitNext(this.getCustomPointersUseCase.handle(roomId)); + + final var customPointers = this.getCustomPointersUseCase.handle(roomId); + this.roomCustomPointersSink.tryEmitNext(new RoomCustomPointersModel(roomId, customPointers)); return id; } + /** + * カスタムポインターリスト購読API + * + * @param roomId ルームID + * @return カスタムポインターリスト + */ + @SubscriptionMapping + public Publisher subscribeToCustomPointers( // + @Argument final String roomId // + ) { + return this.roomCustomPointersFlux // + .filter(roomCustomPointersModel -> roomCustomPointersModel.getRoomId().equals(roomId)) // + .map(CustomPointers::new); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java index 3b7d3654..3726acd9 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/UserController.java @@ -9,7 +9,7 @@ import org.springframework.graphql.data.method.annotation.SubscriptionMapping; import org.springframework.stereotype.Controller; -import dev.abelab.smartpointer.domain.model.RoomUsersEventModel; +import dev.abelab.smartpointer.domain.model.RoomUsersModel; import dev.abelab.smartpointer.infrastructure.api.type.AccessToken; import dev.abelab.smartpointer.infrastructure.api.type.User; import dev.abelab.smartpointer.infrastructure.api.type.Users; @@ -26,9 +26,9 @@ @RequiredArgsConstructor public class UserController { - private final Sinks.Many roomUsersEventSink; + private final Sinks.Many roomUsersSink; - private final Flux roomUsersEventFlux; + private final Flux roomUsersFlux; private final GetUsersUseCase getUsersUseCase; @@ -64,7 +64,7 @@ public AccessToken joinRoom( // ) { final var accessToken = this.joinRoomUseCase.handle(roomId, passcode, userName); final var users = this.getUsersUseCase.handle(roomId); - this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel(roomId, users)); + this.roomUsersSink.tryEmitNext(new RoomUsersModel(roomId, users)); return accessToken; } @@ -79,8 +79,8 @@ public AccessToken joinRoom( // public Publisher subscribeToUsers( // @Argument final String roomId // ) { - return this.roomUsersEventFlux // - .filter(roomUsersEventModel -> roomUsersEventModel.getRoomId().equals(roomId)) // + return this.roomUsersFlux // + .filter(roomUsersModel -> roomUsersModel.getRoomId().equals(roomId)) // .map(Users::new); } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointers.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointers.java index d1fc1c5e..bd179d62 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointers.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/CustomPointers.java @@ -1,7 +1,9 @@ package dev.abelab.smartpointer.infrastructure.api.type; import java.util.List; +import java.util.stream.Collectors; +import dev.abelab.smartpointer.domain.model.RoomCustomPointersModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,4 +23,10 @@ public class CustomPointers { */ List customPointers; + public CustomPointers(final RoomCustomPointersModel roomCustomPointersModel) { + this.customPointers = roomCustomPointersModel.getCustomPointers().stream() // + .map(CustomPointer::new) // + .collect(Collectors.toList()); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java index 7912c960..3c57a5d7 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Users.java @@ -3,7 +3,7 @@ import java.util.List; import java.util.stream.Collectors; -import dev.abelab.smartpointer.domain.model.RoomUsersEventModel; +import dev.abelab.smartpointer.domain.model.RoomUsersModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -23,8 +23,8 @@ public class Users { */ List users; - public Users(final RoomUsersEventModel roomUsersEventModel) { - this.users = roomUsersEventModel.getUsers().stream() // + public Users(final RoomUsersModel roomUsersModel) { + this.users = roomUsersModel.getUsers().stream() // .map(User::new) // .collect(Collectors.toList()); } diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 37a69cbc..f2437201 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -243,6 +243,16 @@ type Subscription { """ roomId: ID! ): User! + + """ + カスタムポインターリスト購読API + """ + subscribeToCustomPointers( + """ + ルームID + """ + roomId: ID! + ): CustomPointers! } """ diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy index 042a7204..31ef3b10 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy @@ -1,6 +1,7 @@ package dev.abelab.smartpointer.infrastructure.api.controller -import dev.abelab.smartpointer.domain.model.CustomPointerModel + +import dev.abelab.smartpointer.domain.model.RoomCustomPointersModel import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.TableHelper @@ -16,10 +17,10 @@ import reactor.test.StepVerifier class CustomPointerController_IT extends AbstractController_IT { @Autowired - Sinks.Many> customPointersSink + Sinks.Many roomCustomPointersSink @Autowired - Flux> customPointersFlux + Flux roomCustomPointersFlux def "カスタムポインターリスト取得API: 正常系 ユーザリストを取得する"() { given: @@ -112,9 +113,9 @@ class CustomPointerController_IT extends AbstractController_IT { final customPointers = sql.rows("SELECT * FROM custom_pointer") customPointers*.id == ["00000000-0000-0000-0000-000000000001", "00000000-0000-0000-0000-000000000002"] - StepVerifier.create(this.customPointersFlux) + StepVerifier.create(this.roomCustomPointersFlux) .expectNextMatches({ - it*.id == ["00000000-0000-0000-0000-000000000001"] + it.customPointers*.id == ["00000000-0000-0000-0000-000000000001"] }) .thenCancel() .verify() diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy index a2ba769a..822751af 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy @@ -1,6 +1,6 @@ package dev.abelab.smartpointer.infrastructure.api.controller -import dev.abelab.smartpointer.domain.model.RoomUsersEventModel +import dev.abelab.smartpointer.domain.model.RoomUsersModel import dev.abelab.smartpointer.domain.model.UserModel import dev.abelab.smartpointer.exception.BadRequestException import dev.abelab.smartpointer.exception.ErrorCode @@ -21,10 +21,10 @@ import reactor.test.StepVerifier class UserController_IT extends AbstractController_IT { @Autowired - Sinks.Many roomUsersEventSink + Sinks.Many roomUsersSink @Autowired - Flux roomUsersEventFlux + Flux roomUsersFlux def "ユーザリスト取得API: 正常系 ユーザリストを取得する"() { given: @@ -231,10 +231,10 @@ class UserController_IT extends AbstractController_IT { final response = this.executeWebSocketSubscription(query, "subscribeToUsers", Users) when: - this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel("00000000-0000-0000-0000-000000000000", [RandomHelper.mock(UserModel), RandomHelper.mock(UserModel)])) - this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel("00000000-0000-0000-0000-000000000000", [RandomHelper.mock(UserModel)])) - this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel("00000000-0000-0000-0000-000000000000", [])) - this.roomUsersEventSink.tryEmitNext(new RoomUsersEventModel("00000000-0000-0000-0000-000000000001", [RandomHelper.mock(UserModel)])) + this.roomUsersSink.tryEmitNext(new RoomUsersModel("00000000-0000-0000-0000-000000000000", [RandomHelper.mock(UserModel), RandomHelper.mock(UserModel)])) + this.roomUsersSink.tryEmitNext(new RoomUsersModel("00000000-0000-0000-0000-000000000000", [RandomHelper.mock(UserModel)])) + this.roomUsersSink.tryEmitNext(new RoomUsersModel("00000000-0000-0000-0000-000000000000", [])) + this.roomUsersSink.tryEmitNext(new RoomUsersModel("00000000-0000-0000-0000-000000000001", [RandomHelper.mock(UserModel)])) then: StepVerifier.create(response) From 5c18f6de26e2ee41993f729a55f4bccbdac6fcdf Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 12:15:09 +0900 Subject: [PATCH 134/189] =?UTF-8?q?[test]=20=E3=82=AB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=A0=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=BC=E3=83=AA?= =?UTF-8?q?=E3=82=B9=E3=83=88=E8=B3=BC=E8=AA=ADAPI=E3=81=AE=E7=B5=B1?= =?UTF-8?q?=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomPointerController_IT.groovy | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy index 31ef3b10..fb82aca9 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy @@ -1,9 +1,10 @@ package dev.abelab.smartpointer.infrastructure.api.controller - +import dev.abelab.smartpointer.domain.model.CustomPointerModel import dev.abelab.smartpointer.domain.model.RoomCustomPointersModel import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper import dev.abelab.smartpointer.infrastructure.api.type.CustomPointers import org.springframework.beans.factory.annotation.Autowired @@ -149,4 +150,43 @@ class CustomPointerController_IT extends AbstractController_IT { "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000001" || ErrorCode.NOT_FOUND_ROOM } + def "カスタムポインターリスト購読API: 正常系 ユーザリストを購読できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + "00000000-0000-0000-0000-000000000001" | "000000" + } + // @formatter:on + + final query = + """ + subscription { + subscribeToCustomPointers(roomId: "00000000-0000-0000-0000-000000000000") { + customPointers { + id + label + url + } + } + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToCustomPointers", CustomPointers) + + when: + this.roomCustomPointersSink.tryEmitNext(new RoomCustomPointersModel("00000000-0000-0000-0000-000000000000", [RandomHelper.mock(CustomPointerModel), RandomHelper.mock(CustomPointerModel)])) + this.roomCustomPointersSink.tryEmitNext(new RoomCustomPointersModel("00000000-0000-0000-0000-000000000000", [RandomHelper.mock(CustomPointerModel)])) + this.roomCustomPointersSink.tryEmitNext(new RoomCustomPointersModel("00000000-0000-0000-0000-000000000000", [])) + this.roomCustomPointersSink.tryEmitNext(new RoomCustomPointersModel("00000000-0000-0000-0000-000000000001", [RandomHelper.mock(CustomPointerModel)])) + + then: + StepVerifier.create(response) + .expectNextMatches({ it.customPointers.size() == 2 }) + .expectNextMatches({ it.customPointers.size() == 1 }) + .expectNextMatches({ it.customPointers.size() == 0 }) + .thenCancel() + .verify() + } + } From 5db69b23716618450d140a6bb7043600a0fbb010 Mon Sep 17 00:00:00 2001 From: kyochan <66947667+kyochn@users.noreply.github.com> Date: Sat, 12 Nov 2022 12:55:22 +0900 Subject: [PATCH 135/189] =?UTF-8?q?electron=E3=81=AE=E3=83=A1=E3=83=8B?= =?UTF-8?q?=E3=83=A5=E3=83=BC=E3=83=90=E3=83=BC=E6=B6=88=E3=81=97=E3=81=9F?= =?UTF-8?q?=20(#285)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * electronのメニューバー消した * electronメニューバー消した --- desktop/packages/main/src/view/window/customPointerType.ts | 1 + desktop/packages/main/src/view/window/inviteLink.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/desktop/packages/main/src/view/window/customPointerType.ts b/desktop/packages/main/src/view/window/customPointerType.ts index 2bf19aa9..3a02d85b 100644 --- a/desktop/packages/main/src/view/window/customPointerType.ts +++ b/desktop/packages/main/src/view/window/customPointerType.ts @@ -33,6 +33,7 @@ export const customPointerType = { await loadFile(customPointerTypesWindow, "customPointerTypes.html"); } + customPointerTypesWindow.removeMenu(); customPointerTypesWindow.show(); }, diff --git a/desktop/packages/main/src/view/window/inviteLink.ts b/desktop/packages/main/src/view/window/inviteLink.ts index 62b5892b..2309a7cf 100644 --- a/desktop/packages/main/src/view/window/inviteLink.ts +++ b/desktop/packages/main/src/view/window/inviteLink.ts @@ -33,6 +33,7 @@ export const inviteLink = { }); } + inviteLinkWindow.removeMenu(); inviteLinkWindow.show(); }, From 05937cdbcb934c7874b9bb28b6c1394f45e67fb3 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 15:07:01 +0900 Subject: [PATCH 136/189] fix desktop script codgen with watch --- desktop/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/desktop/package.json b/desktop/package.json index be849973..ba1842a4 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -8,10 +8,10 @@ "scripts": { "generate-electron-vendors": "cross-env ELECTRON_RUN_AS_NODE=1 electron --experimental-loader ts-node/esm scripts/generate-electron-vendors.mts", "dev:build": "node --experimental-loader ts-node/esm scripts/watch.mts", - "dev": "run-p codegen dev:*", + "dev": "run-p codegen:watch dev:*", "build": "npm run build -ws --if-present", "codegen": "npm run codegen -ws --if-present --", - "codgen:watch": "npm run codegen -- watch", + "codegen:watch": "npm run codegen -- --watch", "lint": "eslint . --ext .ts,.tsx,mts", "format": "npm run check:format --write", "check:format": "prettier . --check", From 47d19d369b1a9aac5c97f19c874bcf6704500ce7 Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 14:51:54 +0900 Subject: [PATCH 137/189] =?UTF-8?q?[feat]=20DB=E5=8F=96=E5=BE=97=E6=99=82?= =?UTF-8?q?=E3=81=AB=E3=82=BF=E3=82=A4=E3=83=9E=E3=83=BC=E3=81=8C=E7=B5=82?= =?UTF-8?q?=E4=BA=86=E6=B8=88=E3=81=BF=E3=81=8B=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/domain/model/TimerModel.java | 6 +++ .../domain/model/TimerModel_UT.groovy | 24 +++++++++ .../api/controller/TimerController_IT.groovy | 50 +++++++++++++++---- 3 files changed, 71 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java index f7420316..1e8777c9 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/TimerModel.java @@ -58,6 +58,12 @@ public TimerModel(final Timer timer) { this.inputTime = timer.getInputTime(); this.remainingTimeAtPaused = Optional.ofNullable(timer.getRemainingTimeAtPaused()); this.finishAt = timer.getFinishAt(); + + // DB上はRUNNINGだが終了時刻を過ぎている場合があるので、終了時刻を過ぎていたらREADYにする + if (LocalDateTime.now().isAfter(this.finishAt)) { + this.status = TimerStatus.READY; + this.remainingTimeAtPaused = Optional.empty(); + } } /** diff --git a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy index a68c2238..bc13e8fc 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/TimerModel_UT.groovy @@ -7,6 +7,7 @@ import dev.abelab.smartpointer.exception.BaseException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.helper.DateHelper import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.infrastructure.db.entity.Timer import java.time.LocalDateTime import java.time.temporal.ChronoUnit @@ -16,6 +17,29 @@ import java.time.temporal.ChronoUnit */ class TimerModel_UT extends AbstractSpecification { + def "new: 現在時刻がfinishAtを超過していた場合はステータスが準備中になる"() { + given: + final entity = Timer.builder() + .status(TimerStatus.RUNNING.id) + .finishAt(inputFinishAt) + .remainingTimeAtPaused(10) + .build() + + when: + final timer = new TimerModel(entity) + + then: + timer.status == expectedStatus + timer.remainingTimeAtPaused == expectedRemainingTimeAtPaused + + where: + inputFinishAt || expectedStatus | expectedRemainingTimeAtPaused + // 終了した + DateHelper.yesterday() || TimerStatus.READY | Optional.empty() + // まだ終了していない + DateHelper.tomorrow() || TimerStatus.RUNNING | Optional.of(10) + } + def "builder: インスタンス生成時にステータスが自動でセットされる"() { when: final timer = TimerModel.builder().build() diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy index bd580a8c..51e543d8 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -6,6 +6,7 @@ import dev.abelab.smartpointer.exception.BadRequestException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.exception.UnauthorizedException +import dev.abelab.smartpointer.helper.DateHelper import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper import dev.abelab.smartpointer.infrastructure.api.type.Timer @@ -37,8 +38,8 @@ class TimerController_IT extends AbstractController_IT { } TableHelper.insert sql, "timer", { room_id | status | input_time | remaining_time_at_paused | finish_at - "00000000-0000-0000-0000-000000000000" | TimerStatus.PAUSED.id | 60 | 30 | "2000-01-01 10:30:30" - "00000000-0000-0000-0000-000000000001" | TimerStatus.READY.id | 100 | null | "2000-01-01 10:30:30" + "00000000-0000-0000-0000-000000000000" | TimerStatus.PAUSED.id | 60 | 30 | "2099-01-01 10:30:30" + "00000000-0000-0000-0000-000000000001" | TimerStatus.READY.id | 100 | null | "2099-01-01 10:30:30" } // @formatter:on @@ -60,7 +61,7 @@ class TimerController_IT extends AbstractController_IT { response.inputTime == expectedInputTime response.remainingTimeAtPaused == expectedRemainingTimeAtPaused response.status == expectedStatus - response.finishAt.year == 2000 + response.finishAt.year == 2099 response.finishAt.monthValue == 1 response.finishAt.dayOfMonth == 1 response.finishAt.hour == 10 @@ -73,6 +74,38 @@ class TimerController_IT extends AbstractController_IT { "00000000-0000-0000-0000-000000000001" || TimerStatus.READY | 100 | null } + def "タイマー取得API: 正常系 RUNNINGだが終了時刻を過ぎている場合はREADYになる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + } + TableHelper.insert sql, "timer", { + room_id | status | input_time | remaining_time_at_paused | finish_at + "00000000-0000-0000-0000-000000000000" | TimerStatus.PAUSED.id | 60 | 30 | DateHelper.yesterday() + } + // @formatter:on + + when: + final query = + """ + query { + getTimer(roomId: "00000000-0000-0000-0000-000000000000") { + inputTime + remainingTimeAtPaused + finishAt + status + } + } + """ + final response = this.executeHttp(query, "getTimer", Timer) + + then: + response.status == TimerStatus.READY + response.remainingTimeAtPaused == null + } + def "タイマー取得API: 異常系 ルームもしくはタイマーが存在しない場合は404エラー"() { given: // @formatter:off @@ -198,7 +231,7 @@ class TimerController_IT extends AbstractController_IT { } TableHelper.insert sql, "timer", { room_id | status | input_time | remaining_time_at_paused | finish_at - "00000000-0000-0000-0000-000000000000" | timerStatus.id | 60 | 30 | "2000-01-01 10:30:30" + "00000000-0000-0000-0000-000000000000" | timerStatus.id | 60 | 30 | "2099-01-01 10:30:30" } // @formatter:on @@ -238,7 +271,6 @@ class TimerController_IT extends AbstractController_IT { } // @formatter:on - expect: final query = """ @@ -263,7 +295,7 @@ class TimerController_IT extends AbstractController_IT { } TableHelper.insert sql, "timer", { room_id | status | input_time | remaining_time_at_paused | finish_at - "00000000-0000-0000-0000-000000000000" | TimerStatus.PAUSED.id | 60 | 30 | "2000-01-01 10:30:30" + "00000000-0000-0000-0000-000000000000" | TimerStatus.PAUSED.id | 60 | 30 | "2099-01-01 10:30:30" } // @formatter:on @@ -376,7 +408,7 @@ class TimerController_IT extends AbstractController_IT { } TableHelper.insert sql, "timer", { room_id | status | input_time | remaining_time_at_paused | finish_at - "00000000-0000-0000-0000-000000000000" | TimerStatus.RUNNING.id | 60 | 30 | "2000-01-01 10:30:30" + "00000000-0000-0000-0000-000000000000" | TimerStatus.RUNNING.id | 60 | 30 | DateHelper.tomorrow().toString() } // @formatter:on @@ -489,7 +521,7 @@ class TimerController_IT extends AbstractController_IT { } TableHelper.insert sql, "timer", { room_id | status | input_time | remaining_time_at_paused | finish_at - "00000000-0000-0000-0000-000000000000" | inputStatus.id | 60 | 30 | "2000-01-01 10:30:30" + "00000000-0000-0000-0000-000000000000" | inputStatus.id | 60 | 30 | "2099-01-01 10:30:30" } // @formatter:on @@ -603,7 +635,7 @@ class TimerController_IT extends AbstractController_IT { } TableHelper.insert sql, "timer", { room_id | status | input_time | remaining_time_at_paused | finish_at - "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2000-01-01 10:30:30" + "00000000-0000-0000-0000-000000000000" | TimerStatus.READY.id | 60 | 30 | "2099-01-01 10:30:30" } // @formatter:on From feede545b53be47a7ff78aaa86334055493e6430 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 15:11:51 +0900 Subject: [PATCH 138/189] subscribe pointer move and deactivate from desktop --- desktop/packages/main/src/controller/index.ts | 66 ++++++++++++++++++- desktop/packages/main/src/gql/gql.ts | 4 ++ desktop/packages/main/src/gql/graphql.ts | 27 +++++++- desktop/packages/main/src/model/index.ts | 4 +- 4 files changed, 95 insertions(+), 6 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index bef91488..f019356a 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -103,6 +103,68 @@ export const controller = { } ); + requestWs( + { + query: graphql(/* GraphQL */ ` + subscription SubscribeToPointer($roomId: ID!) { + subscribeToPointer(roomId: $roomId) { + orientation { + alpha + beta + gamma + } + user { + id + name + } + } + } + `), + variables: { + roomId: data.createRoom.id, + }, + }, + { + next(value) { + const data = value.data?.subscribeToPointer; + if (data) { + controller.pointerUpdated(data.user, data.orientation); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + error() {}, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete() {}, + } + ); + + requestWs( + { + query: graphql(/* GraphQL */ ` + subscription SubscribeToPointerDisconnectEvent($roomId: ID!) { + subscribeToPointerDisconnectEvent(roomId: $roomId) { + id + } + } + `), + variables: { + roomId: data.createRoom.id, + }, + }, + { + next(value) { + const data = value.data?.subscribeToPointerDisconnectEvent; + if (data) { + controller.pointerDeactivated(data.id); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + error() {}, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete() {}, + } + ); + view.tray.update(); await view.window.pointerOverlay.show(); await view.window.inviteLink.show(); @@ -131,8 +193,8 @@ export const controller = { view.window.pointerOverlay.updatePointer(); }, - pointerDeactivated: (user: User) => { - model.deactivatePointer(user); + pointerDeactivated: (userId: User["id"]) => { + model.deactivatePointer(userId); view.window.pointerOverlay.updatePointer(); }, diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts index 7f07d2fb..7512bced 100644 --- a/desktop/packages/main/src/gql/gql.ts +++ b/desktop/packages/main/src/gql/gql.ts @@ -5,10 +5,14 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ const documents = { "\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n ": types.CreateRoomDocument, "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n ": types.SubscribeToSlideControlDocument, + "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n ": types.SubscribeToPointerDocument, + "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n ": types.SubscribeToPointerDisconnectEventDocument, }; export function graphql(source: "\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "): (typeof documents)["\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "]; +export function graphql(source: "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "]; +export function graphql(source: "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "]; export function graphql(source: string): unknown; export function graphql(source: string) { diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index d1a827e0..dc907f24 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -199,6 +199,8 @@ export enum SlideControl { export type Subscription = { __typename?: 'Subscription'; + /** カスタムポインターリスト購読API */ + subscribeToCustomPointers: CustomPointers; /** ポインター操作購読API */ subscribeToPointer: PointerControl; /** ポインター切断イベント購読API */ @@ -208,7 +210,12 @@ export type Subscription = { /** タイマー購読API */ subscribeToTimer: Timer; /** ユーザリスト購読API */ - subscribeToUsers: Array; + subscribeToUsers: Users; +}; + + +export type SubscriptionSubscribeToCustomPointersArgs = { + roomId: Scalars['ID']; }; @@ -287,6 +294,22 @@ export type SubscribeToSlideControlSubscriptionVariables = Exact<{ export type SubscribeToSlideControlSubscription = { __typename?: 'Subscription', subscribeToSlideControl: SlideControl }; +export type SubscribeToPointerSubscriptionVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type SubscribeToPointerSubscription = { __typename?: 'Subscription', subscribeToPointer: { __typename?: 'PointerControl', orientation: { __typename?: 'PointerControlOrientation', alpha: number, beta: number, gamma: number }, user: { __typename?: 'User', id: string, name: string } } }; + +export type SubscribeToPointerDisconnectEventSubscriptionVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type SubscribeToPointerDisconnectEventSubscription = { __typename?: 'Subscription', subscribeToPointerDisconnectEvent: { __typename?: 'User', id: string } }; + export const CreateRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"passcode"}}]}}]}}]} as unknown as DocumentNode; -export const SubscribeToSlideControlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToSlideControl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToSlideControl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; \ No newline at end of file +export const SubscribeToSlideControlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToSlideControl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToSlideControl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const SubscribeToPointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orientation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"alpha"}},{"kind":"Field","name":{"kind":"Name","value":"beta"}},{"kind":"Field","name":{"kind":"Name","value":"gamma"}}]}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; +export const SubscribeToPointerDisconnectEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerDisconnectEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerDisconnectEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 1dfe8e39..7a14304d 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -106,14 +106,14 @@ export const model = { }; }, - deactivatePointer: (user: User) => { + deactivatePointer: (userId: User["id"]) => { if (state.status !== "CREATED") { throw new Error("Cannot deactivate pointer when not in CREATED state"); } const activePointers = new Map(state.activePointers); - activePointers.delete(user.id); + activePointers.delete(userId); state = { ...state, From 6cccb2e3554a427014cb0220073d896d8bfbff0c Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 15:12:19 +0900 Subject: [PATCH 139/189] send pointer move and disconnect from pointer --- .../main/pointer/src/components/Pointer.tsx | 6 +- app/src/main/pointer/src/deviceorientation.ts | 69 ++++++++++++++++--- app/src/main/pointer/src/gql/gql.ts | 4 ++ app/src/main/pointer/src/gql/graphql.ts | 30 +++++++- 4 files changed, 95 insertions(+), 14 deletions(-) diff --git a/app/src/main/pointer/src/components/Pointer.tsx b/app/src/main/pointer/src/components/Pointer.tsx index c00e64ba..8122a68b 100644 --- a/app/src/main/pointer/src/components/Pointer.tsx +++ b/app/src/main/pointer/src/components/Pointer.tsx @@ -153,10 +153,10 @@ export const Pointer: FC = ({ authData }) => { } requestPermission().then(() => { - subscribeOrientation(authData.roomId); + subscribeOrientation(authData.accessToken); }); - return () => unsubscribeOrientation(authData.roomId); - }, [authData.roomId, isActive]); + return () => unsubscribeOrientation(authData.accessToken); + }, [authData.accessToken, isActive]); return ( diff --git a/app/src/main/pointer/src/deviceorientation.ts b/app/src/main/pointer/src/deviceorientation.ts index 4337cb77..68717798 100644 --- a/app/src/main/pointer/src/deviceorientation.ts +++ b/app/src/main/pointer/src/deviceorientation.ts @@ -1,5 +1,11 @@ // import { stompClient } from "./stomp"; +import { requestWs } from "@/api"; +import { graphql } from "@/gql"; + +// eslint-disable-next-line @typescript-eslint/no-empty-function +const noop = () => {}; + const messagePleasingWhenDeny = [ "使用するには許可してください🥺", "(リロードしてください)", @@ -47,7 +53,7 @@ const sub = (a: Orientation, b: Orientation): Orientation => ({ let lastOrientation: Orientation | null = null; let handler: ((orientation: DeviceOrientationEvent) => void) | null = null; -export const subscribeOrientation = (roomId: string) => { +export const subscribeOrientation = (accessToken: string) => { if (handler) { return; } @@ -60,21 +66,66 @@ export const subscribeOrientation = (roomId: string) => { lastOrientation = lastOrientation ?? orientation; - // stompClient.publish({ - // destination: `/app/rooms/${roomId}/pointer/control`, - // body: JSON.stringify(sub(orientation, lastOrientation)), - // }); + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation MovePointer( + $alpha: Float + $beta: Float + $gamma: Float + $accessToken: String! + ) { + movePointer( + alpha: $alpha + beta: $beta + gamma: $gamma + accessToken: $accessToken + ) { + user { + id + } + } + } + `), + variables: { + ...sub(orientation, lastOrientation), + accessToken, + }, + }, + { + next: noop, + error: noop, + complete: noop, + } + ); }; window.addEventListener("deviceorientation", handler); }; -export const unsubscribeOrientation = (roomId: string) => { +export const unsubscribeOrientation = (accessToken: string) => { lastOrientation = null; if (handler) { window.removeEventListener("deviceorientation", handler); handler = null; } - // stompClient.publish({ - // destination: `/app/rooms/${roomId}/pointer/disconnect`, - // }); + + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation DisconnectPointer($accessToken: String!) { + disconnectPointer(accessToken: $accessToken) { + id + } + } + `), + variables: { + accessToken, + }, + }, + { + next: noop, + error: noop, + complete: noop, + } + ); }; diff --git a/app/src/main/pointer/src/gql/gql.ts b/app/src/main/pointer/src/gql/gql.ts index 3288f357..1905ddeb 100644 --- a/app/src/main/pointer/src/gql/gql.ts +++ b/app/src/main/pointer/src/gql/gql.ts @@ -6,11 +6,15 @@ const documents = { "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n ": types.JoinRoomDocument, "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n ": types.GoNextSlideDocument, "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n ": types.GoPreviousSlideDocument, + "\n mutation MovePointer(\n $alpha: Float\n $beta: Float\n $gamma: Float\n $accessToken: String!\n ) {\n movePointer(\n alpha: $alpha\n beta: $beta\n gamma: $gamma\n accessToken: $accessToken\n ) {\n user {\n id\n }\n }\n }\n ": types.MovePointerDocument, + "\n mutation DisconnectPointer($accessToken: String!) {\n disconnectPointer(accessToken: $accessToken) {\n id\n }\n }\n ": types.DisconnectPointerDocument, }; export function graphql(source: "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "): (typeof documents)["\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "]; export function graphql(source: "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "]; export function graphql(source: "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "]; +export function graphql(source: "\n mutation MovePointer(\n $alpha: Float\n $beta: Float\n $gamma: Float\n $accessToken: String!\n ) {\n movePointer(\n alpha: $alpha\n beta: $beta\n gamma: $gamma\n accessToken: $accessToken\n ) {\n user {\n id\n }\n }\n }\n "): (typeof documents)["\n mutation MovePointer(\n $alpha: Float\n $beta: Float\n $gamma: Float\n $accessToken: String!\n ) {\n movePointer(\n alpha: $alpha\n beta: $beta\n gamma: $gamma\n accessToken: $accessToken\n ) {\n user {\n id\n }\n }\n }\n "]; +export function graphql(source: "\n mutation DisconnectPointer($accessToken: String!) {\n disconnectPointer(accessToken: $accessToken) {\n id\n }\n }\n "): (typeof documents)["\n mutation DisconnectPointer($accessToken: String!) {\n disconnectPointer(accessToken: $accessToken) {\n id\n }\n }\n "]; export function graphql(source: string): unknown; export function graphql(source: string) { diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index 68a3d30b..8661b2b2 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -199,6 +199,8 @@ export enum SlideControl { export type Subscription = { __typename?: 'Subscription'; + /** カスタムポインターリスト購読API */ + subscribeToCustomPointers: CustomPointers; /** ポインター操作購読API */ subscribeToPointer: PointerControl; /** ポインター切断イベント購読API */ @@ -208,7 +210,12 @@ export type Subscription = { /** タイマー購読API */ subscribeToTimer: Timer; /** ユーザリスト購読API */ - subscribeToUsers: Array; + subscribeToUsers: Users; +}; + + +export type SubscriptionSubscribeToCustomPointersArgs = { + roomId: Scalars['ID']; }; @@ -298,7 +305,26 @@ export type GoPreviousSlideMutationVariables = Exact<{ export type GoPreviousSlideMutation = { __typename?: 'Mutation', goPreviousSlide: SlideControl }; +export type MovePointerMutationVariables = Exact<{ + alpha?: InputMaybe; + beta?: InputMaybe; + gamma?: InputMaybe; + accessToken: Scalars['String']; +}>; + + +export type MovePointerMutation = { __typename?: 'Mutation', movePointer: { __typename?: 'PointerControl', user: { __typename?: 'User', id: string } } }; + +export type DisconnectPointerMutationVariables = Exact<{ + accessToken: Scalars['String']; +}>; + + +export type DisconnectPointerMutation = { __typename?: 'Mutation', disconnectPointer: { __typename?: 'User', id: string } }; + export const JoinRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"JoinRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"joinRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"passcode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}}},{"kind":"Argument","name":{"kind":"Name","value":"userName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tokenType"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"ttl"}}]}}]}}]} as unknown as DocumentNode; export const GoNextSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoNextSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goNextSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; -export const GoPreviousSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoPreviousSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goPreviousSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; \ No newline at end of file +export const GoPreviousSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoPreviousSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goPreviousSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; +export const MovePointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"MovePointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"alpha"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"beta"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"gamma"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"movePointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"alpha"},"value":{"kind":"Variable","name":{"kind":"Name","value":"alpha"}}},{"kind":"Argument","name":{"kind":"Name","value":"beta"},"value":{"kind":"Variable","name":{"kind":"Name","value":"beta"}}},{"kind":"Argument","name":{"kind":"Name","value":"gamma"},"value":{"kind":"Variable","name":{"kind":"Name","value":"gamma"}}},{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; +export const DisconnectPointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DisconnectPointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"disconnectPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file From 78f348ff550775597c0a42cad86697e81d0ea268 Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 15:21:38 +0900 Subject: [PATCH 140/189] =?UTF-8?q?[feat]=20=E3=83=AB=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E5=85=A5=E5=AE=A4API=E3=81=AE=E3=83=AC=E3=82=B9=E3=83=9D?= =?UTF-8?q?=E3=83=B3=E3=82=B9=E3=81=AB=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=83=A6=E3=83=BC=E3=82=B6=E6=83=85=E5=A0=B1=E3=82=92=E5=90=AB?= =?UTF-8?q?=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/api/type/AccessToken.java | 13 +++++++++++++ .../smartpointer/usecase/user/JoinRoomUseCase.java | 2 +- app/src/main/resources/graphql/schema.graphqls | 5 +++++ .../api/controller/UserController_IT.groovy | 13 ++++++++++--- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/AccessToken.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/AccessToken.java index 74f2473f..23c2c02b 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/AccessToken.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/AccessToken.java @@ -1,5 +1,6 @@ package dev.abelab.smartpointer.infrastructure.api.type; +import dev.abelab.smartpointer.domain.model.UserModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -29,4 +30,16 @@ public class AccessToken { */ Integer ttl; + /** + * ユーザ + */ + User user; + + public AccessToken(final String tokenType, final String accessToken, final Integer ttl, final UserModel userModel) { + this.tokenType = tokenType; + this.accessToken = accessToken; + this.ttl = ttl; + this.user = new User(userModel); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java index 7fb30649..940fbdf6 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/user/JoinRoomUseCase.java @@ -70,7 +70,7 @@ public AccessToken handle(final String roomId, final String passcode, final Stri .setExpiration(new Date(System.currentTimeMillis() + this.authProperty.getTtl() * 1000)) // .signWith(SignatureAlgorithm.HS512, this.authProperty.getJwt().getSecret().getBytes()) // .compact(); - return new AccessToken(this.authProperty.getTokenType(), accessToken, this.authProperty.getTtl()); + return new AccessToken(this.authProperty.getTokenType(), accessToken, this.authProperty.getTtl(), user); } } diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index f2437201..b2505ee9 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -288,6 +288,11 @@ type AccessToken { TTL [s] """ ttl: Int! + + """ + ユーザ + """ + user: User! } """ diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy index 822751af..22be027d 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/UserController_IT.groovy @@ -103,19 +103,26 @@ class UserController_IT extends AbstractController_IT { tokenType accessToken ttl + user { + id + name + } } } """ final response = this.executeHttp(query, "joinRoom", AccessToken) then: + final createdUser = sql.firstRow("SELECT * FROM user") + createdUser.room_id == roomId + createdUser.name == inputUserName + response.tokenType == this.authProperty.tokenType response.accessToken != null response.ttl == this.authProperty.ttl + response.user.id == createdUser.id + response.user.name == inputUserName - final createdUser = sql.firstRow("SELECT * FROM user") - createdUser.room_id == roomId - createdUser.name == inputUserName where: inputUserName << [ From cd3ccc26e2591f33be4d6040cb582c74a7db55eb Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 15:28:46 +0900 Subject: [PATCH 141/189] =?UTF-8?q?[feat]=20=E3=83=AB=E3=83=BC=E3=83=A0ID?= =?UTF-8?q?=E3=82=92UUID=E3=81=8B=E3=82=899=E6=96=87=E5=AD=97=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E6=95=B0=E5=AD=97=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev/abelab/smartpointer/domain/model/RoomModel.java | 8 +++++--- .../abelab/smartpointer/domain/model/RoomModel_UT.groovy | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomModel.java index 711c8b3e..3f541daf 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomModel.java @@ -1,7 +1,5 @@ package dev.abelab.smartpointer.domain.model; -import java.util.UUID; - import org.apache.commons.lang3.RandomStringUtils; import dev.abelab.smartpointer.infrastructure.db.entity.Room; @@ -23,7 +21,11 @@ public class RoomModel { * ルームID */ @Builder.Default - String id = UUID.randomUUID().toString(); + String id = String.format("%s-%s-%s", // + RandomStringUtils.randomAlphanumeric(3), // + RandomStringUtils.randomAlphanumeric(3), // + RandomStringUtils.randomAlphanumeric(3) // + ); /** * パスコード diff --git a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/RoomModel_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/RoomModel_UT.groovy index a2d59f1a..a6253084 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/domain/model/RoomModel_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/domain/model/RoomModel_UT.groovy @@ -12,7 +12,7 @@ class RoomModel_UT extends AbstractSpecification { final room = RoomModel.builder().build() then: - room.id.length() == 36 + room.id.length() == 11 room.passcode.length() == 6 } From 75eb2049186b0b97dd58a99c4a6924353090cc90 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 12:21:36 +0900 Subject: [PATCH 142/189] send and subscribe timer request --- app/src/main/pointer/src/components/Timer.tsx | 339 +++++++++++++----- app/src/main/pointer/src/gql/gql.ts | 12 + app/src/main/pointer/src/gql/graphql.ts | 49 +++ 3 files changed, 320 insertions(+), 80 deletions(-) diff --git a/app/src/main/pointer/src/components/Timer.tsx b/app/src/main/pointer/src/components/Timer.tsx index 63b72d24..d15235f6 100644 --- a/app/src/main/pointer/src/components/Timer.tsx +++ b/app/src/main/pointer/src/components/Timer.tsx @@ -22,10 +22,13 @@ import { useToast, } from "@chakra-ui/react"; import { Cog6ToothIcon } from "@heroicons/react/24/solid"; -import { FC, useEffect, useState } from "react"; +import { Sink } from "graphql-ws"; +import { FC, useEffect, useMemo, useState } from "react"; import { useForm } from "react-hook-form"; -// import { stompClient } from "@/stomp"; +import { requestWs } from "@/api"; +import { graphql } from "@/gql"; +import { Timer as TimerData, TimerStatus } from "@/gql/graphql"; import { AuthData } from "@/types/AuthData"; type Props = { @@ -39,8 +42,7 @@ type FormValues = { export const Timer: FC = ({ authData }) => { const { isOpen, onOpen, onClose } = useDisclosure(); - const [state, setState] = useState<"READY" | "RUNNING">("READY"); - const [finishTimestamp, setFinishedTimestamp] = useState(null); + const [timer, setTimer] = useState(null); const [noticeTime, setNoticeTime] = useState("1"); const toast = useToast(); @@ -54,103 +56,268 @@ export const Timer: FC = ({ authData }) => { const { register, handleSubmit, setValue } = useForm(); + const mutationSink = useMemo( + () => ({ + // eslint-disable-next-line @typescript-eslint/no-empty-function + next: () => {}, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete: () => {}, + error: (error) => { + if (!(error instanceof Error)) { + throw error; + } + toast({ + title: "エラー", + description: error.message, + status: "error", + duration: 5000, + isClosable: true, + }); + }, + }), + [toast] + ); + const onStartStop = (values: FormValues) => { - console.log(values); - switch (state) { - case "READY": { - // TODO: GraphQL 移行 - // stompClient.publish({ - // destination: `/app/rooms/${authData.roomId}/timer/start`, - // body: JSON.stringify({ - // value: Number(values.minutes) * 60 + Number(values.seconds), - // }), - // }); + console.log("SEND", values); + switch (timer?.status) { + case TimerStatus.Ready: { + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation StartTimer($inputTime: Int!, $accessToken: String!) { + startTimer(inputTime: $inputTime, accessToken: $accessToken) { + status + } + } + `), + variables: { + inputTime: Number(values.minutes) * 60 + Number(values.seconds), + accessToken: authData.accessToken, + }, + }, + mutationSink + ); + return; + } + case TimerStatus.Paused: { + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation ResumeTime($accessToken: String!) { + resumeTimer(accessToken: $accessToken) { + status + } + } + `), + variables: { + accessToken: authData.accessToken, + }, + }, + mutationSink + ); return; } - case "RUNNING": { - // TODO: GraphQL 移行 - // stompClient.publish({ - // destination: `/app/rooms/${authData.roomId}/timer/stop`, - // }); + case TimerStatus.Running: { + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation PauseTimer($accessToken: String!) { + pauseTimer(accessToken: $accessToken) { + status + } + } + `), + variables: { + accessToken: authData.accessToken, + }, + }, + mutationSink + ); return; } } }; + const onReset = () => { + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation ResetTimer($accessToken: String!) { + resetTimer(accessToken: $accessToken) { + status + } + } + `), + variables: { + accessToken: authData.accessToken, + }, + }, + mutationSink + ); + }; + useEffect(() => { - // TODO: GraphQL 移行 - // stompClient.subscribe( - // `/topic/rooms/${authData.roomId}/timer`, - // (message) => { - // console.log(message); - // const { status, value, finishAt } = JSON.parse(message.body) as { - // status: 0 | 1; - // value: number; - // finishAt: string; - // }; - // switch (status) { - // case 0: { - // const minutes = Math.floor(value / 60); - // const seconds = value % 60; - // setValue("minutes", minutes.toString()); - // setValue("seconds", seconds.toString()); - // setState("READY"); - // return; - // } - // case 1: { - // setFinishedTimestamp( - // performance.now() + new Date(finishAt).valueOf() - Date.now() - // ); - // setState("RUNNING"); - // return; - // } - // } - // } - // ); - }, [authData.roomId, setValue]); + requestWs( + { + query: graphql(/* GraphQL */ ` + subscription SubscribeTimer($roomId: ID!) { + subscribeToTimer(roomId: $roomId) { + status + inputTime + remainingTimeAtPaused + finishAt + } + } + `), + variables: { + roomId: authData.roomId, + }, + }, + { + next: ({ data, errors }) => { + console.log({ data, errors }); + if (data) { + setTimer(data.subscribeToTimer); + } + if (errors) { + for (const error of errors) { + toast({ + status: "error", + description: error.message, + }); + } + } + }, + error: mutationSink.error, + complete: mutationSink.complete, + } + ); + }, [ + authData.roomId, + mutationSink.complete, + mutationSink.error, + setTimer, + setValue, + toast, + ]); useEffect(() => { - if (finishTimestamp === null) { + if (timer === null) { return; } + switch (timer.status) { + case TimerStatus.Ready: { + const { inputTime } = timer; + + const minutes = Math.floor(inputTime / 60); + const seconds = inputTime % 60; + setValue("minutes", minutes.toString()); + setValue("seconds", seconds.toString()); + return; + } + case TimerStatus.Paused: { + const { remainingTimeAtPaused } = timer; - let requestId: number | null; + if (remainingTimeAtPaused == null) { + return; + } - const tick = (now: number) => { - const timeStamp = finishTimestamp - now; + const minutes = Math.floor(remainingTimeAtPaused / 60); + const seconds = remainingTimeAtPaused % 60; + setValue("minutes", minutes.toString()); + setValue("seconds", seconds.toString()); - if (timeStamp <= 0) { - setValue("minutes", "0"); - setValue("seconds", "0"); - setState("READY"); - toast({ - title: "タイマーが終了しました", - description: "お疲れ様でした", - status: "success", - duration: 9000, - isClosable: true, - }); return; } + case TimerStatus.Running: { + let requestId: number | null; + + const tick = () => { + if (timer.status !== TimerStatus.Running) { + return; + } + + const timeStamp = new Date(timer.finishAt).valueOf() - Date.now(); - const seconds = Math.floor((timeStamp / 1000) % 60); - const minutes = Math.floor((timeStamp / 1000 / 60) % 60); - setValue("minutes", minutes.toString()); - setValue("seconds", seconds.toString()); + if (timeStamp <= 0) { + setValue("minutes", "0"); + setValue("seconds", "0"); + setTimer((oldTimer) => { + if (oldTimer === null) { + return null; + } + return { + status: TimerStatus.Ready, + remainingTimeAtPaused: null, + inputTime: oldTimer.inputTime, + finishAt: oldTimer.finishAt, + }; + }); + toast({ + title: "タイマーが終了しました", + description: "お疲れ様でした", + status: "success", + duration: 9000, + isClosable: true, + }); + return; + } - requestId = requestAnimationFrame(tick); - }; + const seconds = Math.floor((timeStamp / 1000) % 60); + const minutes = Math.floor((timeStamp / 1000 / 60) % 60); + setValue("minutes", minutes.toString()); + setValue("seconds", seconds.toString()); - if (state === "RUNNING") { - requestId = requestAnimationFrame(tick); + requestId = requestAnimationFrame(tick); + }; + requestId = requestAnimationFrame(tick); + + return () => { + if (requestId) { + cancelAnimationFrame(requestId); + } + }; + } } + }, [timer, setValue, toast]); + + useEffect(() => { + requestWs( + { + query: graphql(/* GraphQL */ ` + query GetTimer($roomId: ID!) { + getTimer(roomId: $roomId) { + status + inputTime + remainingTimeAtPaused + finishAt + } + } + `), + variables: { + roomId: authData.roomId, + }, + }, + { + ...mutationSink, + next: ({ data, errors }) => { + if (data) { + setTimer(data.getTimer); + } - return () => { - if (requestId) { - cancelAnimationFrame(requestId); + if (errors) { + for (const error of errors) { + toast({ + status: "error", + description: error.message, + }); + } + } + }, } - }; - }, [finishTimestamp, setValue, state]); + ); + }, [authData.roomId, mutationSink, toast]); return ( @@ -163,6 +330,8 @@ export const Timer: FC = ({ authData }) => { height={24} {...register("minutes", { required: true, + disabled: + timer === null || timer.status === TimerStatus.Running, })} /> @@ -190,6 +359,8 @@ export const Timer: FC = ({ authData }) => { height={24} {...register("seconds", { required: true, + disabled: + timer === null || timer.status === TimerStatus.Running, })} /> @@ -199,10 +370,18 @@ export const Timer: FC = ({ authData }) => { - + - diff --git a/app/src/main/pointer/src/gql/gql.ts b/app/src/main/pointer/src/gql/gql.ts index 1905ddeb..e87207b3 100644 --- a/app/src/main/pointer/src/gql/gql.ts +++ b/app/src/main/pointer/src/gql/gql.ts @@ -6,6 +6,12 @@ const documents = { "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n ": types.JoinRoomDocument, "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n ": types.GoNextSlideDocument, "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n ": types.GoPreviousSlideDocument, + "\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n ": types.StartTimerDocument, + "\n mutation ResumeTime($accessToken: String!) {\n resumeTimer(accessToken: $accessToken) {\n status\n }\n }\n ": types.ResumeTimeDocument, + "\n mutation PauseTimer($accessToken: String!) {\n pauseTimer(accessToken: $accessToken) {\n status\n }\n }\n ": types.PauseTimerDocument, + "\n mutation ResetTimer($accessToken: String!) {\n resetTimer(accessToken: $accessToken) {\n status\n }\n }\n ": types.ResetTimerDocument, + "\n subscription SubscribeTimer($roomId: ID!) {\n subscribeToTimer(roomId: $roomId) {\n status\n inputTime\n remainingTimeAtPaused\n finishAt\n }\n }\n ": types.SubscribeTimerDocument, + "\n query GetTimer($roomId: ID!) {\n getTimer(roomId: $roomId) {\n status\n inputTime\n remainingTimeAtPaused\n finishAt\n }\n }\n ": types.GetTimerDocument, "\n mutation MovePointer(\n $alpha: Float\n $beta: Float\n $gamma: Float\n $accessToken: String!\n ) {\n movePointer(\n alpha: $alpha\n beta: $beta\n gamma: $gamma\n accessToken: $accessToken\n ) {\n user {\n id\n }\n }\n }\n ": types.MovePointerDocument, "\n mutation DisconnectPointer($accessToken: String!) {\n disconnectPointer(accessToken: $accessToken) {\n id\n }\n }\n ": types.DisconnectPointerDocument, }; @@ -13,6 +19,12 @@ const documents = { export function graphql(source: "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "): (typeof documents)["\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "]; export function graphql(source: "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "]; export function graphql(source: "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "]; +export function graphql(source: "\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n "]; +export function graphql(source: "\n mutation ResumeTime($accessToken: String!) {\n resumeTimer(accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation ResumeTime($accessToken: String!) {\n resumeTimer(accessToken: $accessToken) {\n status\n }\n }\n "]; +export function graphql(source: "\n mutation PauseTimer($accessToken: String!) {\n pauseTimer(accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation PauseTimer($accessToken: String!) {\n pauseTimer(accessToken: $accessToken) {\n status\n }\n }\n "]; +export function graphql(source: "\n mutation ResetTimer($accessToken: String!) {\n resetTimer(accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation ResetTimer($accessToken: String!) {\n resetTimer(accessToken: $accessToken) {\n status\n }\n }\n "]; +export function graphql(source: "\n subscription SubscribeTimer($roomId: ID!) {\n subscribeToTimer(roomId: $roomId) {\n status\n inputTime\n remainingTimeAtPaused\n finishAt\n }\n }\n "): (typeof documents)["\n subscription SubscribeTimer($roomId: ID!) {\n subscribeToTimer(roomId: $roomId) {\n status\n inputTime\n remainingTimeAtPaused\n finishAt\n }\n }\n "]; +export function graphql(source: "\n query GetTimer($roomId: ID!) {\n getTimer(roomId: $roomId) {\n status\n inputTime\n remainingTimeAtPaused\n finishAt\n }\n }\n "): (typeof documents)["\n query GetTimer($roomId: ID!) {\n getTimer(roomId: $roomId) {\n status\n inputTime\n remainingTimeAtPaused\n finishAt\n }\n }\n "]; export function graphql(source: "\n mutation MovePointer(\n $alpha: Float\n $beta: Float\n $gamma: Float\n $accessToken: String!\n ) {\n movePointer(\n alpha: $alpha\n beta: $beta\n gamma: $gamma\n accessToken: $accessToken\n ) {\n user {\n id\n }\n }\n }\n "): (typeof documents)["\n mutation MovePointer(\n $alpha: Float\n $beta: Float\n $gamma: Float\n $accessToken: String!\n ) {\n movePointer(\n alpha: $alpha\n beta: $beta\n gamma: $gamma\n accessToken: $accessToken\n ) {\n user {\n id\n }\n }\n }\n "]; export function graphql(source: "\n mutation DisconnectPointer($accessToken: String!) {\n disconnectPointer(accessToken: $accessToken) {\n id\n }\n }\n "): (typeof documents)["\n mutation DisconnectPointer($accessToken: String!) {\n disconnectPointer(accessToken: $accessToken) {\n id\n }\n }\n "]; diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index 8661b2b2..d016d2dc 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -305,6 +305,49 @@ export type GoPreviousSlideMutationVariables = Exact<{ export type GoPreviousSlideMutation = { __typename?: 'Mutation', goPreviousSlide: SlideControl }; +export type StartTimerMutationVariables = Exact<{ + inputTime: Scalars['Int']; + accessToken: Scalars['String']; +}>; + + +export type StartTimerMutation = { __typename?: 'Mutation', startTimer: { __typename?: 'Timer', status: TimerStatus } }; + +export type ResumeTimeMutationVariables = Exact<{ + accessToken: Scalars['String']; +}>; + + +export type ResumeTimeMutation = { __typename?: 'Mutation', resumeTimer: { __typename?: 'Timer', status: TimerStatus } }; + +export type PauseTimerMutationVariables = Exact<{ + accessToken: Scalars['String']; +}>; + + +export type PauseTimerMutation = { __typename?: 'Mutation', pauseTimer: { __typename?: 'Timer', status: TimerStatus } }; + +export type ResetTimerMutationVariables = Exact<{ + accessToken: Scalars['String']; +}>; + + +export type ResetTimerMutation = { __typename?: 'Mutation', resetTimer: { __typename?: 'Timer', status: TimerStatus } }; + +export type SubscribeTimerSubscriptionVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type SubscribeTimerSubscription = { __typename?: 'Subscription', subscribeToTimer: { __typename?: 'Timer', status: TimerStatus, inputTime: number, remainingTimeAtPaused?: number | null, finishAt: string } }; + +export type GetTimerQueryVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type GetTimerQuery = { __typename?: 'Query', getTimer: { __typename?: 'Timer', status: TimerStatus, inputTime: number, remainingTimeAtPaused?: number | null, finishAt: string } }; + export type MovePointerMutationVariables = Exact<{ alpha?: InputMaybe; beta?: InputMaybe; @@ -326,5 +369,11 @@ export type DisconnectPointerMutation = { __typename?: 'Mutation', disconnectPoi export const JoinRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"JoinRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"joinRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"passcode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}}},{"kind":"Argument","name":{"kind":"Name","value":"userName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tokenType"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"ttl"}}]}}]}}]} as unknown as DocumentNode; export const GoNextSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoNextSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goNextSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; export const GoPreviousSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoPreviousSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goPreviousSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; +export const StartTimerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"StartTimer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"inputTime"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"startTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"inputTime"},"value":{"kind":"Variable","name":{"kind":"Name","value":"inputTime"}}},{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; +export const ResumeTimeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ResumeTime"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"resumeTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; +export const PauseTimerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"PauseTimer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"pauseTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; +export const ResetTimerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ResetTimer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"resetTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; +export const SubscribeTimerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeTimer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"inputTime"}},{"kind":"Field","name":{"kind":"Name","value":"remainingTimeAtPaused"}},{"kind":"Field","name":{"kind":"Name","value":"finishAt"}}]}}]}}]} as unknown as DocumentNode; +export const GetTimerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetTimer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"inputTime"}},{"kind":"Field","name":{"kind":"Name","value":"remainingTimeAtPaused"}},{"kind":"Field","name":{"kind":"Name","value":"finishAt"}}]}}]}}]} as unknown as DocumentNode; export const MovePointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"MovePointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"alpha"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"beta"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"gamma"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"movePointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"alpha"},"value":{"kind":"Variable","name":{"kind":"Name","value":"alpha"}}},{"kind":"Argument","name":{"kind":"Name","value":"beta"},"value":{"kind":"Variable","name":{"kind":"Name","value":"beta"}}},{"kind":"Argument","name":{"kind":"Name","value":"gamma"},"value":{"kind":"Variable","name":{"kind":"Name","value":"gamma"}}},{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const DisconnectPointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DisconnectPointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"disconnectPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file From 63fba2005a9287f8362ed5226c1e7052fa2f1641 Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 15:40:36 +0900 Subject: [PATCH 143/189] =?UTF-8?q?[feat]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E3=82=BF=E3=82=A4=E3=83=97=E3=82=92=E3=83=AB?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=83=AC=E3=82=B9=E3=83=9D=E3=83=B3=E3=82=B9?= =?UTF-8?q?=E3=81=AB=E5=90=AB=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/domain/model/RoomModel.java | 6 ++ .../api/controller/RoomController.java | 7 +- .../infrastructure/api/type/Room.java | 6 ++ .../infrastructure/db/entity/Room.java | 9 +++ .../infrastructure/db/entity/RoomExample.java | 70 +++++++++++++++++++ .../infrastructure/factory/RoomFactory.java | 1 + .../usecase/room/CreateRoomUseCase.java | 7 +- .../db/mapper/base/RoomBaseMapper.xml | 27 +++++-- .../db/migration/V1_1_4__alter_room.sql | 2 + .../main/resources/graphql/schema.graphqls | 12 +++- .../api/controller/RoomController_IT.groovy | 6 +- .../repository/RoomRepositoryImpl_UT.groovy | 5 +- .../usecase/room/CreateRoomUseCase_UT.groovy | 2 +- 13 files changed, 147 insertions(+), 13 deletions(-) create mode 100644 app/src/main/resources/db/migration/V1_1_4__alter_room.sql diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomModel.java index 3f541daf..6395c814 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomModel.java @@ -33,9 +33,15 @@ public class RoomModel { @Builder.Default String passcode = RandomStringUtils.randomNumeric(6); + /** + * ポインタータイプ + */ + String pointerType; + public RoomModel(final Room room) { this.id = room.getId(); this.passcode = room.getPasscode(); + this.pointerType = room.getPointerType(); } /** diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java index 292eec11..60c2d881 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java @@ -23,11 +23,14 @@ public class RoomController { /** * ルーム作成API * + * @param pointerType ポインタータイプ * @return ルーム */ @MutationMapping - public Room createRoom() { - return new Room(this.createRoomUseCase.handle()); + public Room createRoom( // + @Argument final String pointerType // + ) { + return new Room(this.createRoomUseCase.handle(pointerType)); } /** diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Room.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Room.java index 5f8b4f4c..ee88a379 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Room.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/type/Room.java @@ -25,9 +25,15 @@ public class Room { */ String passcode; + /** + * ポインタータイプ + */ + String pointerType; + public Room(final RoomModel roomModel) { this.id = roomModel.getId(); this.passcode = roomModel.getPasscode(); + this.pointerType = roomModel.getPointerType(); } } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/Room.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/Room.java index 5ddd8d64..8bdaec75 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/Room.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/Room.java @@ -27,4 +27,13 @@ public class Room { * @mbg.generated */ private String passcode; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column room.pointer_type + * + * @mbg.generated + */ + private String pointerType; } \ No newline at end of file diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/RoomExample.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/RoomExample.java index 38757866..8ce1b412 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/RoomExample.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/entity/RoomExample.java @@ -333,6 +333,76 @@ public Criteria andPasscodeNotBetween(String value1, String value2) { addCriterion("`passcode` not between", value1, value2, "passcode"); return (Criteria) this; } + + public Criteria andPointerTypeIsNull() { + addCriterion("`pointer_type` is null"); + return (Criteria) this; + } + + public Criteria andPointerTypeIsNotNull() { + addCriterion("`pointer_type` is not null"); + return (Criteria) this; + } + + public Criteria andPointerTypeEqualTo(String value) { + addCriterion("`pointer_type` =", value, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeNotEqualTo(String value) { + addCriterion("`pointer_type` <>", value, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeGreaterThan(String value) { + addCriterion("`pointer_type` >", value, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeGreaterThanOrEqualTo(String value) { + addCriterion("`pointer_type` >=", value, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeLessThan(String value) { + addCriterion("`pointer_type` <", value, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeLessThanOrEqualTo(String value) { + addCriterion("`pointer_type` <=", value, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeLike(String value) { + addCriterion("`pointer_type` like", value, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeNotLike(String value) { + addCriterion("`pointer_type` not like", value, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeIn(List values) { + addCriterion("`pointer_type` in", values, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeNotIn(List values) { + addCriterion("`pointer_type` not in", values, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeBetween(String value1, String value2) { + addCriterion("`pointer_type` between", value1, value2, "pointerType"); + return (Criteria) this; + } + + public Criteria andPointerTypeNotBetween(String value1, String value2) { + addCriterion("`pointer_type` not between", value1, value2, "pointerType"); + return (Criteria) this; + } } /** diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/RoomFactory.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/RoomFactory.java index 9775fb46..361f8958 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/RoomFactory.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/RoomFactory.java @@ -21,6 +21,7 @@ public Room createRoom(final RoomModel roomModel) { return Room.builder() // .id(roomModel.getId()) // .passcode(roomModel.getPasscode()) // + .pointerType(roomModel.getPointerType()) // .build(); } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java index 48752cdd..085ac3f6 100644 --- a/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase.java @@ -26,12 +26,15 @@ public class CreateRoomUseCase { /** * Handle UseCase * + * @param pointerType ポインタータイプ * @return ルーム */ @Transactional - public RoomModel handle() { + public RoomModel handle(final String pointerType) { // ルームを作成 - final var room = RoomModel.builder().build(); + final var room = RoomModel.builder() // + .pointerType(pointerType) // + .build(); this.roomRepository.insert(room); // ルームを作成 diff --git a/app/src/main/resources/db/mapper/base/RoomBaseMapper.xml b/app/src/main/resources/db/mapper/base/RoomBaseMapper.xml index 745e5e0c..89088e04 100644 --- a/app/src/main/resources/db/mapper/base/RoomBaseMapper.xml +++ b/app/src/main/resources/db/mapper/base/RoomBaseMapper.xml @@ -8,6 +8,7 @@ --> + - `id`, `passcode` + `id`, `passcode`, `pointer_type` diff --git a/app/src/main/resources/db/migration/V1_1_4__alter_room.sql b/app/src/main/resources/db/migration/V1_1_4__alter_room.sql new file mode 100644 index 00000000..d861e7cf --- /dev/null +++ b/app/src/main/resources/db/migration/V1_1_4__alter_room.sql @@ -0,0 +1,2 @@ +ALTER TABLE `room` + ADD `pointer_type` VARCHAR(255) NOT NULL DEFAULT ''; \ No newline at end of file diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index b2505ee9..95010171 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -45,7 +45,12 @@ type Mutation { """ ルーム作成API """ - createRoom: Room! + createRoom( + """ + ポインタータイプ + """ + pointerType: String! + ): Room! """ ルーム削除API @@ -268,6 +273,11 @@ type Room { パスコード """ passcode: String! + + """ + ポインタータイプ + """ + pointerType: String! } """ diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy index bf9acd09..41c5f52a 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy @@ -16,9 +16,10 @@ class RoomController_IT extends AbstractController_IT { final query = """ mutation { - createRoom { + createRoom(pointerType: "SPOTLIGHT") { id passcode + pointerType } } """ @@ -28,11 +29,14 @@ class RoomController_IT extends AbstractController_IT { final createdRoom = sql.firstRow("SELECT * FROM room") createdRoom.id == response.id createdRoom.passcode == response.passcode + createdRoom.pointer_type == response.pointerType final createdTimer = sql.firstRow("SELECT * FROM timer") createdTimer.input_time == 300 createdTimer.remaining_time_at_paused == null createdTimer.room_id == createdRoom.id + + response.pointerType == "SPOTLIGHT" } def "ルーム削除API: 正常系 ルームを削除できる"() { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl_UT.groovy index 7e9ff166..a4d21672 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl_UT.groovy @@ -41,7 +41,9 @@ class RoomRepositoryImpl_UT extends AbstractRepository_UT { def "insert: ルームを作成"() { given: - final room = RoomModel.builder().build() + final room = RoomModel.builder() + .pointerType(RandomHelper.alphanumeric(10)) + .build() when: this.sut.insert(room) @@ -50,6 +52,7 @@ class RoomRepositoryImpl_UT extends AbstractRepository_UT { final createdRoom = sql.firstRow("SELECT * FROM room") createdRoom.id == room.id createdRoom.passcode == room.passcode + createdRoom.pointer_type == room.pointerType } def "deleteById: IDからルームを削除"() { diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy index 84730986..c37b45a6 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/room/CreateRoomUseCase_UT.groovy @@ -13,7 +13,7 @@ class CreateRoomUseCase_UT extends AbstractUseCase_UT { def "handle: ルームを作成する"() { when: - this.sut.handle() + this.sut.handle("") then: 1 * this.roomRepository.insert(_) From 2addd6d51677f3001fd72e3a2ba65825b00ea096 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 15:55:52 +0900 Subject: [PATCH 144/189] disconnect and delete when close room --- desktop/packages/main/src/api.ts | 5 ++++ desktop/packages/main/src/controller/index.ts | 29 ++++++++++++++++--- desktop/packages/main/src/gql/gql.ts | 2 ++ desktop/packages/main/src/gql/graphql.ts | 12 +++++++- 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/desktop/packages/main/src/api.ts b/desktop/packages/main/src/api.ts index a35125ef..a12900c1 100644 --- a/desktop/packages/main/src/api.ts +++ b/desktop/packages/main/src/api.ts @@ -49,6 +49,11 @@ export const initializeWsClient = () => { }); }; +export const closeWsClient = () => { + graphqlWsClient?.dispose(); + graphqlWsClient = null; +}; + export const requestWs = < T = unknown, V extends Record = Record diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index f019356a..033f390d 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -7,7 +7,12 @@ import { import { randomUUID } from "crypto"; import { screen } from "electron"; -import { initializeWsClient, requestHttp, requestWs } from "@/api"; +import { + closeWsClient, + initializeWsClient, + requestHttp, + requestWs, +} from "@/api"; import { graphql } from "@/gql"; import { model } from "@/model"; import { goNext, goPrevious } from "@/pagination"; @@ -178,13 +183,29 @@ export const controller = { model.leftRoom(user); }, - closeRoom: () => { + closeRoom: async () => { + if (model.state.status !== "CREATED") { + throw new Error("Cannot close room when not in created state"); + } + + await requestHttp({ + query: graphql(/* GraphQL */ ` + mutation DeleteRoom($roomId: ID!) { + deleteRoom(roomId: $roomId) + } + `), + variables: { + roomId: model.state.room.id, + }, + }); + view.window.pointerOverlay.close(); view.window.inviteLink.close(); - // TODO: GraphQL 移行 - // unsubscribeRoomSubscription(); + closeWsClient(); model.closeRoom(); + + view.tray.update(); }, pointerUpdated: (user: User, orientation: PointerOrientation) => { diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts index 7512bced..3933c87c 100644 --- a/desktop/packages/main/src/gql/gql.ts +++ b/desktop/packages/main/src/gql/gql.ts @@ -7,12 +7,14 @@ const documents = { "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n ": types.SubscribeToSlideControlDocument, "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n ": types.SubscribeToPointerDocument, "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n ": types.SubscribeToPointerDisconnectEventDocument, + "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n ": types.DeleteRoomDocument, }; export function graphql(source: "\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "): (typeof documents)["\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "]; +export function graphql(source: "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "): (typeof documents)["\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "]; export function graphql(source: string): unknown; export function graphql(source: string) { diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index dc907f24..b89ba032 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -23,6 +23,8 @@ export type AccessToken = { tokenType: Scalars['String']; /** TTL [s] */ ttl: Scalars['Int']; + /** ユーザ */ + user: User; }; /** カスタムポインター */ @@ -308,8 +310,16 @@ export type SubscribeToPointerDisconnectEventSubscriptionVariables = Exact<{ export type SubscribeToPointerDisconnectEventSubscription = { __typename?: 'Subscription', subscribeToPointerDisconnectEvent: { __typename?: 'User', id: string } }; +export type DeleteRoomMutationVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type DeleteRoomMutation = { __typename?: 'Mutation', deleteRoom: string }; + export const CreateRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"passcode"}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToSlideControlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToSlideControl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToSlideControl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const SubscribeToPointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orientation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"alpha"}},{"kind":"Field","name":{"kind":"Name","value":"beta"}},{"kind":"Field","name":{"kind":"Name","value":"gamma"}}]}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; -export const SubscribeToPointerDisconnectEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerDisconnectEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerDisconnectEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file +export const SubscribeToPointerDisconnectEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerDisconnectEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerDisconnectEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; +export const DeleteRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; \ No newline at end of file From 6ee6df1eeb899e6d14ae4a14202908996bd037af Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 16:11:05 +0900 Subject: [PATCH 145/189] close room when quit app --- desktop/packages/main/src/index.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/desktop/packages/main/src/index.ts b/desktop/packages/main/src/index.ts index 6c753f5c..2521d3ed 100644 --- a/desktop/packages/main/src/index.ts +++ b/desktop/packages/main/src/index.ts @@ -1,6 +1,7 @@ import { app } from "electron"; -import { controller } from "./controller"; +import { controller } from "@/controller"; +import { model } from "@/model"; import "./security-restrictions"; @@ -12,3 +13,9 @@ app.on("window-all-closed", () => { // prevent the app from quitting when all windows are closed // the app will quit when the user clicks the tray menu }); + +app.on("before-quit", () => { + if (model.state.status === "CREATED") { + controller.closeRoom(); + } +}); From 2d5fbbedddf34c55b62fb6e6a0cce9ba5b0b45a6 Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 15:51:48 +0900 Subject: [PATCH 146/189] =?UTF-8?q?[feat]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E3=82=BF=E3=82=A4=E3=83=97=E5=A4=89=E6=9B=B4?= =?UTF-8?q?API=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 10 ++++ .../domain/model/RoomPointerModel.java | 27 +++++++++ .../domain/repository/RoomRepository.java | 8 +++ .../api/controller/PointerController.java | 58 +++++++++++++++++++ .../infrastructure/db/mapper/RoomMapper.java | 3 + .../repository/RoomRepositoryImpl.java | 5 ++ .../pointer/ChangePointerTypeUseCase.java | 35 +++++++++++ .../pointer/GetPointerTypeUseCase.java | 33 +++++++++++ .../main/resources/db/mapper/RoomMapper.xml | 11 ++++ .../main/resources/graphql/schema.graphqls | 35 +++++++++++ .../repository/RoomRepositoryImpl_UT.groovy | 18 ++++++ .../ChangePointerTypeUseCase_UT.groovy | 46 +++++++++++++++ .../pointer/GetPointerTypeUseCase_UT.groovy | 44 ++++++++++++++ 13 files changed, 333 insertions(+) create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/model/RoomPointerModel.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ChangePointerTypeUseCase.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/pointer/GetPointerTypeUseCase.java create mode 100644 app/src/main/resources/db/mapper/RoomMapper.xml create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ChangePointerTypeUseCase_UT.groovy create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/GetPointerTypeUseCase_UT.groovy diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java index 208bb131..3a068f80 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -74,4 +74,14 @@ public Flux roomCustomPointersFlux(final Sinks.Many roomPointerSink() { + return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); + } + + @Bean + public Flux roomPointerFlux(final Sinks.Many roomPointerSink) { + return roomPointerSink.asFlux(); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomPointerModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomPointerModel.java new file mode 100644 index 00000000..6bbf2687 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomPointerModel.java @@ -0,0 +1,27 @@ +package dev.abelab.smartpointer.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ルームポインターモデル + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class RoomPointerModel { + + /** + * ルームID + */ + String roomId; + + /** + * ポインタータイプ + */ + String pointerType; + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/repository/RoomRepository.java b/app/src/main/java/dev/abelab/smartpointer/domain/repository/RoomRepository.java index 0f6fc59a..054dcb75 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/repository/RoomRepository.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/repository/RoomRepository.java @@ -39,4 +39,12 @@ public interface RoomRepository { */ boolean existsById(final String id); + /** + * IDからポインタータイプを更新 + * + * @param id ルームID + * @param pointerType ポインタータイプ + */ + void updatePointerTypeById(final String id, final String pointerType); + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java index 069e1bc4..c9f2d149 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/PointerController.java @@ -3,14 +3,18 @@ import org.reactivestreams.Publisher; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.QueryMapping; import org.springframework.graphql.data.method.annotation.SubscriptionMapping; import org.springframework.stereotype.Controller; import dev.abelab.smartpointer.domain.model.PointerControlModel; +import dev.abelab.smartpointer.domain.model.RoomPointerModel; import dev.abelab.smartpointer.domain.model.UserModel; import dev.abelab.smartpointer.infrastructure.api.type.PointerControl; import dev.abelab.smartpointer.infrastructure.api.type.User; +import dev.abelab.smartpointer.usecase.pointer.ChangePointerTypeUseCase; import dev.abelab.smartpointer.usecase.pointer.DisconnectPointerUseCase; +import dev.abelab.smartpointer.usecase.pointer.GetPointerTypeUseCase; import dev.abelab.smartpointer.usecase.pointer.MovePointerUseCase; import dev.abelab.smartpointer.util.AuthUtil; import lombok.RequiredArgsConstructor; @@ -24,6 +28,10 @@ @RequiredArgsConstructor public class PointerController { + private final Flux roomPointerFlux; + + private final Sinks.Many roomPointerSink; + private final Flux pointerControlFlux; private final Sinks.Many pointerControlSink; @@ -38,6 +46,10 @@ public class PointerController { private final DisconnectPointerUseCase disconnectPointerUseCase; + private final GetPointerTypeUseCase getPointerTypeUseCase; + + private final ChangePointerTypeUseCase changePointerTypeUseCase; + /** * ポインター操作API * @@ -75,6 +87,37 @@ public User disconnectPointer( // return new User(user); } + /** + * ポインタータイプ取得API + * + * @param roomId ルームID + * @return ポインタータイプ + */ + @QueryMapping + public String getPointerType( // + @Argument final String roomId // + ) { + return this.getPointerTypeUseCase.handle(roomId); + } + + /** + * ポインタータイプ変更API + * + * @param pointerType ポインタータイプ + * @param roomId ルームID + * @return ポインタータイプ + */ + @MutationMapping + public String changePointerType( // + @Argument final String pointerType, // + @Argument final String roomId // + ) { + this.changePointerTypeUseCase.handle(pointerType, roomId); + this.roomPointerSink.tryEmitNext(new RoomPointerModel(roomId, pointerType)); + + return pointerType; + } + /** * ポインター操作購読API * @@ -105,4 +148,19 @@ public Publisher subscribeToPointerDisconnectEvent( // .map(User::new); } + /** + * ポインタータイプ購読API + * + * @param roomId ルームID + * @return ポインタータイプ + */ + @SubscriptionMapping + public Publisher subscribeToPointerType( // + @Argument final String roomId // + ) { + return this.roomPointerFlux // + .filter(pointerControlFlux -> pointerControlFlux.getRoomId().equals(roomId)) // + .map(RoomPointerModel::getPointerType); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/RoomMapper.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/RoomMapper.java index 8d84d0aa..5ae1739a 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/RoomMapper.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/db/mapper/RoomMapper.java @@ -3,4 +3,7 @@ import dev.abelab.smartpointer.infrastructure.db.mapper.base.RoomBaseMapper; public interface RoomMapper extends RoomBaseMapper { + + void updatePointerTypeById(final String id, final String pointerType); + } diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl.java index b4596a00..6959153d 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl.java @@ -45,4 +45,9 @@ public boolean existsById(final String id) { return this.roomMapper.countByExample(example) != 0; } + @Override + public void updatePointerTypeById(final String id, final String pointerType) { + this.roomMapper.updatePointerTypeById(id, pointerType); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ChangePointerTypeUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ChangePointerTypeUseCase.java new file mode 100644 index 00000000..16c8a1a6 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/ChangePointerTypeUseCase.java @@ -0,0 +1,35 @@ +package dev.abelab.smartpointer.usecase.pointer; + +import org.springframework.stereotype.Component; + +import dev.abelab.smartpointer.domain.repository.RoomRepository; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.NotFoundException; +import lombok.RequiredArgsConstructor; + +/** + * ポインタータイプ変更ユースケース + */ +@RequiredArgsConstructor +@Component +public class ChangePointerTypeUseCase { + + private final RoomRepository roomRepository; + + /** + * Handle UseCase + * + * @param pointerType ポインタータイプ + * @param roomId ルームID + */ + public void handle(final String pointerType, final String roomId) { + // ルームの存在チェック + if (!this.roomRepository.existsById(roomId)) { + throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); + } + + // ポインタータイプを変更 + this.roomRepository.updatePointerTypeById(roomId, pointerType); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/GetPointerTypeUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/GetPointerTypeUseCase.java new file mode 100644 index 00000000..65c2833d --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/pointer/GetPointerTypeUseCase.java @@ -0,0 +1,33 @@ +package dev.abelab.smartpointer.usecase.pointer; + +import org.springframework.stereotype.Component; + +import dev.abelab.smartpointer.domain.repository.RoomRepository; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.NotFoundException; +import lombok.RequiredArgsConstructor; + +/** + * ポインタータイプ取得ユースケース + */ +@RequiredArgsConstructor +@Component +public class GetPointerTypeUseCase { + + private final RoomRepository roomRepository; + + /** + * Handle UseCase + * + * @param roomId ルームID + * @return ポインタータイプ + */ + public String handle(final String roomId) { + // ルームの取得 & 存在チェック + final var room = this.roomRepository.selectById(roomId) // + .orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_ROOM)); + + return room.getPointerType(); + } + +} diff --git a/app/src/main/resources/db/mapper/RoomMapper.xml b/app/src/main/resources/db/mapper/RoomMapper.xml new file mode 100644 index 00000000..a7d54b7d --- /dev/null +++ b/app/src/main/resources/db/mapper/RoomMapper.xml @@ -0,0 +1,11 @@ + + + + + + UPDATE `room` + SET `pointer_type` =#{pointerType} + WHERE `id` = #{id} + + + diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 95010171..52b9ba27 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -39,6 +39,16 @@ type Query { """ roomId: ID! ): CustomPointers! + + """ + ポインタータイプ取得API + """ + getPointerType( + """ + ルームID + """ + roomId: ID! + ): String! } type Mutation { @@ -196,6 +206,21 @@ type Mutation { """ roomId: ID! ): ID! + + """ + ポインタータイプ変更API + """ + changePointerType( + """ + ポインタータイプ + """ + pointerType: String! + + """ + ルームID + """ + roomId: ID! + ): String! } type Subscription { @@ -258,6 +283,16 @@ type Subscription { """ roomId: ID! ): CustomPointers! + + """ + ポインタータイプ購読API + """ + subscribeToPointerType( + """ + ルームID + """ + roomId: ID! + ): String! } """ diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl_UT.groovy index a4d21672..71f25dd3 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/RoomRepositoryImpl_UT.groovy @@ -94,4 +94,22 @@ class RoomRepositoryImpl_UT extends AbstractRepository_UT { "00000000-0000-0000-0000-000000000001" || false } + def "updatePointerTypeById: IDからポインタータイプを変更"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode | pointer_type + "00000000-0000-0000-0000-000000000000" | "" | "A" + "00000000-0000-0000-0000-000000000001" | "" | "A" + } + // @formatter:on + + when: + this.sut.updatePointerTypeById("00000000-0000-0000-0000-000000000000", "B") + + then: + final rooms = sql.rows("SELECT * FROM room") + rooms*.pointer_type == ["B", "A"] + } + } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ChangePointerTypeUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ChangePointerTypeUseCase_UT.groovy new file mode 100644 index 00000000..4d350a6f --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/ChangePointerTypeUseCase_UT.groovy @@ -0,0 +1,46 @@ +package dev.abelab.smartpointer.usecase.pointer + +import dev.abelab.smartpointer.domain.model.RoomModel +import dev.abelab.smartpointer.exception.BaseException +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT +import org.springframework.beans.factory.annotation.Autowired + +/** + * ChangePointerTypeUseCaseの単体テスト + */ +class ChangePointerTypeUseCase_UT extends AbstractUseCase_UT { + + @Autowired + ChangePointerTypeUseCase sut + + def "handle: ポインターを切断する"() { + given: + final room = RandomHelper.mock(RoomModel) + final pointerType = RandomHelper.alphanumeric(10) + + when: + this.sut.handle(pointerType, room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.roomRepository.updatePointerTypeById(room.id, pointerType) + } + + def "handle: ルームが存在しない場合は404エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + final pointerType = RandomHelper.alphanumeric(10) + + when: + this.sut.handle(pointerType, room.id) + + then: + 1 * this.roomRepository.existsById(room.id) >> false + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + +} diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/GetPointerTypeUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/GetPointerTypeUseCase_UT.groovy new file mode 100644 index 00000000..71ce08ff --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/pointer/GetPointerTypeUseCase_UT.groovy @@ -0,0 +1,44 @@ +package dev.abelab.smartpointer.usecase.pointer + +import dev.abelab.smartpointer.domain.model.RoomModel +import dev.abelab.smartpointer.exception.BaseException +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT +import org.springframework.beans.factory.annotation.Autowired + +/** + * GetPointerTypeUseCaseの単体テスト + */ +class GetPointerTypeUseCase_UT extends AbstractUseCase_UT { + + @Autowired + GetPointerTypeUseCase sut + + def "handle: ポインタータイプを取得する"() { + given: + final room = RandomHelper.mock(RoomModel) + + when: + final result = this.sut.handle(room.id) + + then: + 1 * this.roomRepository.selectById(room.id) >> Optional.of(room) + result == room.pointerType + } + + def "handle: ルームが存在しない場合は404エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + + when: + this.sut.handle(room.id) + + then: + 1 * this.roomRepository.selectById(room.id) >> Optional.empty() + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + +} From 847a4056e947a6161b8df7edb37df2b61e199262 Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 16:01:44 +0900 Subject: [PATCH 147/189] =?UTF-8?q?[test]=20=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E3=82=BF=E3=82=A4=E3=83=97=E5=A4=89=E6=9B=B4?= =?UTF-8?q?API=E3=81=AE=E7=B5=B1=E5=90=88=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PointerController_IT.groovy | 115 +++++++++++++++++- 1 file changed, 114 insertions(+), 1 deletion(-) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy index 0f3aa8f2..adbbdcbe 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/PointerController_IT.groovy @@ -1,8 +1,10 @@ package dev.abelab.smartpointer.infrastructure.api.controller import dev.abelab.smartpointer.domain.model.PointerControlModel +import dev.abelab.smartpointer.domain.model.RoomPointerModel import dev.abelab.smartpointer.domain.model.UserModel import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.exception.UnauthorizedException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper @@ -18,6 +20,12 @@ import reactor.test.StepVerifier */ class PointerController_IT extends AbstractController_IT { + @Autowired + Flux roomPointerFlux + + @Autowired + Sinks.Many roomPointerSink + @Autowired Flux pointerControlFlux @@ -30,6 +38,39 @@ class PointerController_IT extends AbstractController_IT { @Autowired Sinks.Many pointerDisconnectSink + def "ポインタータイプ取得API: 正常系 ポインタータイプを取得する"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode | pointer_type + "00000000-0000-0000-0000-000000000000" | "" | "A" + } + // @formatter:on + + when: + final query = + """ + query { + getPointerType(roomId: "00000000-0000-0000-0000-000000000000") + } + """ + final response = this.executeWebSocket(query, "getPointerType", String) + + then: + response == "A" + } + + def "ポインタータイプ取得API: 異常系 ルームが存在しない場合は404エラー"() { + expect: + final query = + """ + query { + getPointerType(roomId: "00000000-0000-0000-0000-000000000000") + } + """ + this.executeWebSocket(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + def "ポインター操作API: 正常系 ポインターを操作する"() { given: // @formatter:off @@ -156,7 +197,6 @@ class PointerController_IT extends AbstractController_IT { } // @formatter:on - expect: final query = """ @@ -170,6 +210,47 @@ class PointerController_IT extends AbstractController_IT { this.executeWebSocket(query, new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN)) } + def "ポインタータイプ変更API: 正常系 ポインタータイプを変更する"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode | pointer_type + "00000000-0000-0000-0000-000000000000" | "" | "A" + } + // @formatter:on + + when: + final query = + """ + mutation { + changePointerType(pointerType: "B", roomId: "00000000-0000-0000-0000-000000000000") + } + """ + final response = this.executeWebSocket(query, "changePointerType", String) + + then: + response == "B" + + StepVerifier.create(this.roomPointerFlux) + .expectNextMatches({ + it.roomId == "00000000-0000-0000-0000-000000000000" && it.pointerType == "B" + }) + .thenCancel() + .verify() + } + + def "ポインタータイプ変更API: 異常系 ルームが存在しない場合は440エラー"() { + + expect: + final query = + """ + mutation { + changePointerType(pointerType: "", roomId: "00000000-0000-0000-0000-000000000000") + } + """ + this.executeWebSocket(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + def "ポインター操作購読API: 正常系 ポインターを購読できる"() { given: // @formatter:off @@ -262,4 +343,36 @@ class PointerController_IT extends AbstractController_IT { .verify() } + def "ポインタータイプ購読API: 正常系 ポインタータイプを購読できる"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + "00000000-0000-0000-0000-000000000001" | RandomHelper.numeric(6) + } + // @formatter:on + + final loginUser = this.login("00000000-0000-0000-0000-000000000000") + + final query = """ + subscription { + subscribeToPointerType(roomId: "${loginUser.roomId}") + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToPointerType", String) + + when: + this.roomPointerSink.tryEmitNext(new RoomPointerModel("00000000-0000-0000-0000-000000000000", "A")) + this.roomPointerSink.tryEmitNext(new RoomPointerModel("00000000-0000-0000-0000-000000000000", "B")) + this.roomPointerSink.tryEmitNext(new RoomPointerModel("00000000-0000-0000-0000-000000000001", "C")) + + then: + StepVerifier.create(response) + .expectNextMatches({ it == "A" }) + .expectNextMatches({ it == "B" }) + .thenCancel() + .verify() + } + } From f1ecbbe17fd57b1d2fd24624620f070d86d808ed Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 16:34:15 +0900 Subject: [PATCH 148/189] set first pointer type to "SPOTLIGHT" --- desktop/packages/main/src/controller/index.ts | 4 +-- desktop/packages/main/src/gql/gql.ts | 4 +-- desktop/packages/main/src/gql/graphql.ts | 31 ++++++++++++++++++- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 033f390d..1fc5a020 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -60,9 +60,9 @@ export const controller = { model.startCreatingRoom(); const data = await requestHttp({ - query: graphql(` + query: graphql(/* GraphQL */ ` mutation CreateRoom { - createRoom { + createRoom(pointerType: "SPOTLIGHT") { id passcode } diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts index 3933c87c..5dd87e7e 100644 --- a/desktop/packages/main/src/gql/gql.ts +++ b/desktop/packages/main/src/gql/gql.ts @@ -3,14 +3,14 @@ import * as types from './graphql'; import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; const documents = { - "\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n ": types.CreateRoomDocument, + "\n mutation CreateRoom {\n createRoom(pointerType: \"SPOTLIGHT\") {\n id\n passcode\n }\n }\n ": types.CreateRoomDocument, "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n ": types.SubscribeToSlideControlDocument, "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n ": types.SubscribeToPointerDocument, "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n ": types.SubscribeToPointerDisconnectEventDocument, "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n ": types.DeleteRoomDocument, }; -export function graphql(source: "\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "): (typeof documents)["\n mutation CreateRoom {\n createRoom {\n id\n passcode\n }\n }\n "]; +export function graphql(source: "\n mutation CreateRoom {\n createRoom(pointerType: \"SPOTLIGHT\") {\n id\n passcode\n }\n }\n "): (typeof documents)["\n mutation CreateRoom {\n createRoom(pointerType: \"SPOTLIGHT\") {\n id\n passcode\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "]; diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index b89ba032..b3a23112 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -47,6 +47,8 @@ export type CustomPointers = { export type Mutation = { __typename?: 'Mutation'; + /** ポインタータイプ変更API */ + changePointerType: Scalars['String']; /** ルーム作成API */ createRoom: Room; /** カスタムポインター削除API */ @@ -74,6 +76,17 @@ export type Mutation = { }; +export type MutationChangePointerTypeArgs = { + pointerType: Scalars['String']; + roomId: Scalars['ID']; +}; + + +export type MutationCreateRoomArgs = { + pointerType: Scalars['String']; +}; + + export type MutationDeleteCustomPointerArgs = { id: Scalars['ID']; roomId: Scalars['ID']; @@ -159,6 +172,8 @@ export type Query = { __typename?: 'Query'; /** カスタムポインターリスト取得API */ getCustomPointers: CustomPointers; + /** ポインタータイプ取得API */ + getPointerType: Scalars['String']; /** タイマー取得API */ getTimer: Timer; /** ユーザリスト取得API */ @@ -173,6 +188,11 @@ export type QueryGetCustomPointersArgs = { }; +export type QueryGetPointerTypeArgs = { + roomId: Scalars['ID']; +}; + + export type QueryGetTimerArgs = { roomId: Scalars['ID']; }; @@ -189,6 +209,8 @@ export type Room = { id: Scalars['ID']; /** パスコード */ passcode: Scalars['String']; + /** ポインタータイプ */ + pointerType: Scalars['String']; }; /** スライド操作 */ @@ -207,6 +229,8 @@ export type Subscription = { subscribeToPointer: PointerControl; /** ポインター切断イベント購読API */ subscribeToPointerDisconnectEvent: User; + /** ポインタータイプ購読API */ + subscribeToPointerType: Scalars['String']; /** スライド操作購読API */ subscribeToSlideControl: SlideControl; /** タイマー購読API */ @@ -231,6 +255,11 @@ export type SubscriptionSubscribeToPointerDisconnectEventArgs = { }; +export type SubscriptionSubscribeToPointerTypeArgs = { + roomId: Scalars['ID']; +}; + + export type SubscriptionSubscribeToSlideControlArgs = { roomId: Scalars['ID']; }; @@ -318,7 +347,7 @@ export type DeleteRoomMutationVariables = Exact<{ export type DeleteRoomMutation = { __typename?: 'Mutation', deleteRoom: string }; -export const CreateRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"passcode"}}]}}]}}]} as unknown as DocumentNode; +export const CreateRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"StringValue","value":"SPOTLIGHT","block":false}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"passcode"}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToSlideControlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToSlideControl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToSlideControl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const SubscribeToPointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orientation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"alpha"}},{"kind":"Field","name":{"kind":"Name","value":"beta"}},{"kind":"Field","name":{"kind":"Name","value":"gamma"}}]}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToPointerDisconnectEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerDisconnectEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerDisconnectEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; From 0c1dd6280244b43417b16aaaff622d3600e12abb Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 16:37:15 +0900 Subject: [PATCH 149/189] set pointer preview color each user --- .../pointer/src/components/JoinRoomForm.tsx | 8 +++-- .../main/pointer/src/components/Pointer.tsx | 3 +- app/src/main/pointer/src/gql/gql.ts | 4 +-- app/src/main/pointer/src/gql/graphql.ts | 35 +++++++++++++++++-- app/src/main/pointer/src/types/AuthData.ts | 6 ++-- 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/app/src/main/pointer/src/components/JoinRoomForm.tsx b/app/src/main/pointer/src/components/JoinRoomForm.tsx index 58e088b4..cfb48afd 100644 --- a/app/src/main/pointer/src/components/JoinRoomForm.tsx +++ b/app/src/main/pointer/src/components/JoinRoomForm.tsx @@ -52,7 +52,7 @@ export const JoinRoomForm: FC = ({ onSubmit: onSubmitProps }) => { const onSubmit = async (values: FormValues) => { try { const data = await requestHttp({ - query: graphql(` + query: graphql(/* GraphQL */ ` mutation JoinRoom( $roomId: ID! $passcode: String! @@ -66,6 +66,9 @@ export const JoinRoomForm: FC = ({ onSubmit: onSubmitProps }) => { tokenType accessToken ttl + user { + id + } } } `), @@ -76,7 +79,8 @@ export const JoinRoomForm: FC = ({ onSubmit: onSubmitProps }) => { localStorage.setItem(localStorageKey, values.userName); onSubmitProps({ - ...data.joinRoom, + accessToken: data.joinRoom.accessToken, + userId: data.joinRoom.user.id, userName: values.userName, roomId: values.roomId, }); diff --git a/app/src/main/pointer/src/components/Pointer.tsx b/app/src/main/pointer/src/components/Pointer.tsx index 8122a68b..9194cf7d 100644 --- a/app/src/main/pointer/src/components/Pointer.tsx +++ b/app/src/main/pointer/src/components/Pointer.tsx @@ -144,8 +144,7 @@ export const Pointer: FC = ({ authData }) => { "pink.500", ]); - // TODO: get color from authData - const color = randomColorFromList("useId", colors); + const color = randomColorFromList(authData.userId, colors); useEffect(() => { if (!isActive) { diff --git a/app/src/main/pointer/src/gql/gql.ts b/app/src/main/pointer/src/gql/gql.ts index e87207b3..ca89d360 100644 --- a/app/src/main/pointer/src/gql/gql.ts +++ b/app/src/main/pointer/src/gql/gql.ts @@ -3,7 +3,7 @@ import * as types from './graphql'; import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; const documents = { - "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n ": types.JoinRoomDocument, + "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n user {\n id\n }\n }\n }\n ": types.JoinRoomDocument, "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n ": types.GoNextSlideDocument, "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n ": types.GoPreviousSlideDocument, "\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n ": types.StartTimerDocument, @@ -16,7 +16,7 @@ const documents = { "\n mutation DisconnectPointer($accessToken: String!) {\n disconnectPointer(accessToken: $accessToken) {\n id\n }\n }\n ": types.DisconnectPointerDocument, }; -export function graphql(source: "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "): (typeof documents)["\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n }\n }\n "]; +export function graphql(source: "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n user {\n id\n }\n }\n }\n "): (typeof documents)["\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n user {\n id\n }\n }\n }\n "]; export function graphql(source: "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "]; export function graphql(source: "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "]; export function graphql(source: "\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n "]; diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index d016d2dc..ae99f9ea 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -23,6 +23,8 @@ export type AccessToken = { tokenType: Scalars['String']; /** TTL [s] */ ttl: Scalars['Int']; + /** ユーザ */ + user: User; }; /** カスタムポインター */ @@ -45,6 +47,8 @@ export type CustomPointers = { export type Mutation = { __typename?: 'Mutation'; + /** ポインタータイプ変更API */ + changePointerType: Scalars['String']; /** ルーム作成API */ createRoom: Room; /** カスタムポインター削除API */ @@ -72,6 +76,17 @@ export type Mutation = { }; +export type MutationChangePointerTypeArgs = { + pointerType: Scalars['String']; + roomId: Scalars['ID']; +}; + + +export type MutationCreateRoomArgs = { + pointerType: Scalars['String']; +}; + + export type MutationDeleteCustomPointerArgs = { id: Scalars['ID']; roomId: Scalars['ID']; @@ -157,6 +172,8 @@ export type Query = { __typename?: 'Query'; /** カスタムポインターリスト取得API */ getCustomPointers: CustomPointers; + /** ポインタータイプ取得API */ + getPointerType: Scalars['String']; /** タイマー取得API */ getTimer: Timer; /** ユーザリスト取得API */ @@ -171,6 +188,11 @@ export type QueryGetCustomPointersArgs = { }; +export type QueryGetPointerTypeArgs = { + roomId: Scalars['ID']; +}; + + export type QueryGetTimerArgs = { roomId: Scalars['ID']; }; @@ -187,6 +209,8 @@ export type Room = { id: Scalars['ID']; /** パスコード */ passcode: Scalars['String']; + /** ポインタータイプ */ + pointerType: Scalars['String']; }; /** スライド操作 */ @@ -205,6 +229,8 @@ export type Subscription = { subscribeToPointer: PointerControl; /** ポインター切断イベント購読API */ subscribeToPointerDisconnectEvent: User; + /** ポインタータイプ購読API */ + subscribeToPointerType: Scalars['String']; /** スライド操作購読API */ subscribeToSlideControl: SlideControl; /** タイマー購読API */ @@ -229,6 +255,11 @@ export type SubscriptionSubscribeToPointerDisconnectEventArgs = { }; +export type SubscriptionSubscribeToPointerTypeArgs = { + roomId: Scalars['ID']; +}; + + export type SubscriptionSubscribeToSlideControlArgs = { roomId: Scalars['ID']; }; @@ -289,7 +320,7 @@ export type JoinRoomMutationVariables = Exact<{ }>; -export type JoinRoomMutation = { __typename?: 'Mutation', joinRoom: { __typename?: 'AccessToken', tokenType: string, accessToken: string, ttl: number } }; +export type JoinRoomMutation = { __typename?: 'Mutation', joinRoom: { __typename?: 'AccessToken', tokenType: string, accessToken: string, ttl: number, user: { __typename?: 'User', id: string } } }; export type GoNextSlideMutationVariables = Exact<{ accessToken: Scalars['String']; @@ -366,7 +397,7 @@ export type DisconnectPointerMutationVariables = Exact<{ export type DisconnectPointerMutation = { __typename?: 'Mutation', disconnectPointer: { __typename?: 'User', id: string } }; -export const JoinRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"JoinRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"joinRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"passcode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}}},{"kind":"Argument","name":{"kind":"Name","value":"userName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tokenType"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"ttl"}}]}}]}}]} as unknown as DocumentNode; +export const JoinRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"JoinRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"joinRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"passcode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}}},{"kind":"Argument","name":{"kind":"Name","value":"userName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tokenType"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"ttl"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const GoNextSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoNextSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goNextSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; export const GoPreviousSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoPreviousSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goPreviousSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; export const StartTimerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"StartTimer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"inputTime"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"startTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"inputTime"},"value":{"kind":"Variable","name":{"kind":"Name","value":"inputTime"}}},{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; diff --git a/app/src/main/pointer/src/types/AuthData.ts b/app/src/main/pointer/src/types/AuthData.ts index 92c51a5b..26e65c20 100644 --- a/app/src/main/pointer/src/types/AuthData.ts +++ b/app/src/main/pointer/src/types/AuthData.ts @@ -1,9 +1,9 @@ -import { AccessToken } from "@/gql/graphql"; - /** * ログインユーザ */ -export type AuthData = AccessToken & { +export type AuthData = { userName: string; roomId: string; + accessToken: string; + userId: string; }; From 802ebc1e51c0b1f0e983233752e60c3f92fd0302 Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 16:22:23 +0900 Subject: [PATCH 150/189] =?UTF-8?q?[feat]=20=E3=82=AB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=A0=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=BC=E4=BD=9C?= =?UTF-8?q?=E6=88=90API=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartpointer/domain/model/FileModel.java | 17 ++++- .../repository/CustomPointerRepository.java | 7 ++ .../smartpointer/exception/ErrorCode.java | 2 + .../controller/CustomPointerController.java | 27 ++++++++ .../factory/CustomPointerFactory.java | 29 +++++++++ .../CustomPointerRepositoryImpl.java | 9 +++ .../CreateCustomPointersUseCase.java | 63 ++++++++++++++++++ .../smartpointer/util/FileStorageUtil.java | 12 ++-- .../main/resources/graphql/schema.graphqls | 25 +++++++ app/src/main/resources/i18n/messages.yml | 3 +- .../CustomPointerRepositoryImpl_UT.groovy | 30 ++++++++- .../usecase/AbstractUseCase_UT.groovy | 4 ++ .../CreateCustomPointersUseCase_UT.groovy | 65 +++++++++++++++++++ 13 files changed, 285 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/CustomPointerFactory.java create mode 100644 app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/CreateCustomPointersUseCase.java create mode 100644 app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/CreateCustomPointersUseCase_UT.groovy diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/FileModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/FileModel.java index e971b3a3..807b17ee 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/model/FileModel.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/FileModel.java @@ -1,5 +1,7 @@ package dev.abelab.smartpointer.domain.model; +import org.apache.commons.net.util.Base64; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -15,13 +17,24 @@ public class FileModel { /** - * UUID + * ID */ - private String uuid; + private String id; + + /** + * ルームID + */ + private String roomId; /** * ファイルのバイナリ */ private byte[] content; + public FileModel(final String id, final String roomId, final String content) { + this.id = id; + this.roomId = roomId; + this.content = Base64.decodeBase64(content); + } + } diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java b/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java index 741c5672..0f0cb348 100644 --- a/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java +++ b/app/src/main/java/dev/abelab/smartpointer/domain/repository/CustomPointerRepository.java @@ -26,6 +26,13 @@ public interface CustomPointerRepository { */ boolean existsByIdAndRoomId(final String id, final String roomId); + /** + * カスタムポインターを作成 + * + * @param customPointerModel カスタムポインター + */ + void insert(final CustomPointerModel customPointerModel); + /** * ID、ルームIDからカスタムポインターを削除 * diff --git a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java index 39624445..fa6f039b 100644 --- a/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java +++ b/app/src/main/java/dev/abelab/smartpointer/exception/ErrorCode.java @@ -59,6 +59,8 @@ public enum ErrorCode { */ USER_NAME_IS_ALREADY_EXISTS(5000, "exception.conflict.user_name_is_already_exists"), + CUSTOM_POINTER_IS_ALREADY_EXISTS(5001, "exception.conflict.custom_pointer_is_already_exists"), + /** * 500 Internal Server Error: 6000~6999 */ diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java index 6f0097e1..04499d08 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController.java @@ -12,6 +12,7 @@ import dev.abelab.smartpointer.domain.model.RoomCustomPointersModel; import dev.abelab.smartpointer.infrastructure.api.type.CustomPointer; import dev.abelab.smartpointer.infrastructure.api.type.CustomPointers; +import dev.abelab.smartpointer.usecase.custom_pointer.CreateCustomPointersUseCase; import dev.abelab.smartpointer.usecase.custom_pointer.DeleteCustomPointersUseCase; import dev.abelab.smartpointer.usecase.custom_pointer.GetCustomPointersUseCase; import lombok.RequiredArgsConstructor; @@ -31,6 +32,8 @@ public class CustomPointerController { private final GetCustomPointersUseCase getCustomPointersUseCase; + private final CreateCustomPointersUseCase createCustomPointersUseCase; + private final DeleteCustomPointersUseCase deleteCustomPointersUseCase; /** @@ -49,6 +52,30 @@ public CustomPointers getCustomPointers( // return new CustomPointers(customPointers); } + /** + * カスタムポインター作成API + * + * @param roomId ルームID + * @param id カスタムポインターID + * @param label ラベル + * @param content 画像コンテンツ(Base64) + * @return カスタムポインターID + */ + @MutationMapping + public String createCustomPointer( // + @Argument final String roomId, // + @Argument final String id, // + @Argument final String label, // + @Argument final String content // + ) { + this.createCustomPointersUseCase.handle(roomId, id, label, content); + + final var customPointers = this.getCustomPointersUseCase.handle(roomId); + this.roomCustomPointersSink.tryEmitNext(new RoomCustomPointersModel(roomId, customPointers)); + + return id; + } + /** * カスタムポインター削除API * diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/CustomPointerFactory.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/CustomPointerFactory.java new file mode 100644 index 00000000..ac9e233d --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/factory/CustomPointerFactory.java @@ -0,0 +1,29 @@ +package dev.abelab.smartpointer.infrastructure.factory; + +import org.springframework.stereotype.Component; + +import dev.abelab.smartpointer.domain.model.CustomPointerModel; +import dev.abelab.smartpointer.infrastructure.db.entity.CustomPointer; + +/** + * カスタムポインターファクトリ + */ +@Component +public class CustomPointerFactory { + + /** + * CustomPointerを作成 + * + * @param customPointerModel model + * @return entity + */ + public CustomPointer createCustomPointer(final CustomPointerModel customPointerModel) { + return CustomPointer.builder() // + .id(customPointerModel.getId()) // + .roomId(customPointerModel.getRoomId()) // + .label(customPointerModel.getLabel()) // + .url(customPointerModel.getUrl()) // + .build(); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java index 2bd9de0a..7da52964 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl.java @@ -9,6 +9,7 @@ import dev.abelab.smartpointer.domain.repository.CustomPointerRepository; import dev.abelab.smartpointer.infrastructure.db.entity.CustomPointerExample; import dev.abelab.smartpointer.infrastructure.db.mapper.CustomPointerMapper; +import dev.abelab.smartpointer.infrastructure.factory.CustomPointerFactory; import lombok.RequiredArgsConstructor; /** @@ -20,6 +21,8 @@ public class CustomPointerRepositoryImpl implements CustomPointerRepository { private final CustomPointerMapper customPointerMapper; + private final CustomPointerFactory customPointerFactory; + @Override public List selectByRoomId(final String roomId) { final var example = new CustomPointerExample(); @@ -36,6 +39,12 @@ public boolean existsByIdAndRoomId(final String id, final String roomId) { return this.customPointerMapper.countByExample(example) != 0; } + @Override + public void insert(final CustomPointerModel customPointerModel) { + final var customPointer = this.customPointerFactory.createCustomPointer(customPointerModel); + this.customPointerMapper.insert(customPointer); + } + @Override public void deleteByIdAndRoomId(final String id, final String roomId) { final var example = new CustomPointerExample(); diff --git a/app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/CreateCustomPointersUseCase.java b/app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/CreateCustomPointersUseCase.java new file mode 100644 index 00000000..2d253818 --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/usecase/custom_pointer/CreateCustomPointersUseCase.java @@ -0,0 +1,63 @@ +package dev.abelab.smartpointer.usecase.custom_pointer; + +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import dev.abelab.smartpointer.domain.model.CustomPointerModel; +import dev.abelab.smartpointer.domain.model.FileModel; +import dev.abelab.smartpointer.domain.repository.CustomPointerRepository; +import dev.abelab.smartpointer.domain.repository.RoomRepository; +import dev.abelab.smartpointer.exception.ConflictException; +import dev.abelab.smartpointer.exception.ErrorCode; +import dev.abelab.smartpointer.exception.NotFoundException; +import dev.abelab.smartpointer.util.FileStorageUtil; +import lombok.RequiredArgsConstructor; + +/** + * カスタムポインター作成ユースケース + */ +@RequiredArgsConstructor +@Component +public class CreateCustomPointersUseCase { + + private final RoomRepository roomRepository; + + private final CustomPointerRepository customPointerRepository; + + private final FileStorageUtil fileStorageUtil; + + /** + * Handle UseCase + * + * @param roomId ルームID + * @param id カスタムポインターID + * @param label ラベル + * @param content 画像コンテンツ(Base64) + */ + @Transactional + public void handle(final String roomId, final String id, final String label, final String content) { + // ルームの存在チェック + if (!this.roomRepository.existsById(roomId)) { + throw new NotFoundException(ErrorCode.NOT_FOUND_ROOM); + } + + // カスタムポインターの存在チェック + if (this.customPointerRepository.existsByIdAndRoomId(id, roomId)) { + throw new ConflictException(ErrorCode.CUSTOM_POINTER_IS_ALREADY_EXISTS); + } + + // 画像をアップロード + final var file = new FileModel(id, roomId, content); + final var url = this.fileStorageUtil.upload(file); + + // カスタムポインターを作成 + final var customPointer = CustomPointerModel.builder() // + .id(id) // + .roomId(roomId) // + .label(label) // + .url(url) // + .build(); + this.customPointerRepository.insert(customPointer); + } + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/util/FileStorageUtil.java b/app/src/main/java/dev/abelab/smartpointer/util/FileStorageUtil.java index 325749cc..ed7883a5 100644 --- a/app/src/main/java/dev/abelab/smartpointer/util/FileStorageUtil.java +++ b/app/src/main/java/dev/abelab/smartpointer/util/FileStorageUtil.java @@ -24,7 +24,7 @@ @Slf4j public class FileStorageUtil { - private static final String IMAGE_PATH = "images/"; + private static final String IMAGE_PATH = "images"; private final GcpProperty gcpProperty; @@ -35,9 +35,12 @@ public class FileStorageUtil { * @return URL */ public String upload(final FileModel fileModel) { - final var url = String.format("https://storage.googleapis.com/%s/images/%s", // + final var url = String.format("https://storage.googleapis.com/%s/%s/%s/%s", // this.gcpProperty.getCloudStorage().getBucketName(), // - fileModel.getUuid()); + IMAGE_PATH, // + fileModel.getRoomId(), // + fileModel.getId() // + ); if (!this.gcpProperty.getCloudStorage().isEnabled()) { return url; @@ -48,7 +51,8 @@ public String upload(final FileModel fileModel) { .setProjectId(this.gcpProperty.getProjectId()) // .build().getService(); - final var blobId = BlobId.of(this.gcpProperty.getCloudStorage().getBucketName(), IMAGE_PATH + fileModel.getUuid()); + final var blobId = BlobId.of(this.gcpProperty.getCloudStorage().getBucketName(), + String.format("%s/%s/%s", IMAGE_PATH, fileModel.getRoomId(), fileModel.getId())); final var blobInfo = BlobInfo.newBuilder(blobId).build(); storage.create(blobInfo, fileModel.getContent()); diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index 52b9ba27..f1eb3cb0 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -192,6 +192,31 @@ type Mutation { accessToken: String! ): User! + """ + カスタムポインター作成API + """ + createCustomPointer( + """ + ルームID + """ + roomId: ID! + + """ + カスタムポインターID + """ + id: ID! + + """ + ラベル + """ + label: String! + + """ + 画像コンテンツ(Base64) + """ + content: String! + ): ID! + """ カスタムポインター削除API """ diff --git a/app/src/main/resources/i18n/messages.yml b/app/src/main/resources/i18n/messages.yml index 6c8814a1..fba2942c 100644 --- a/app/src/main/resources/i18n/messages.yml +++ b/app/src/main/resources/i18n/messages.yml @@ -21,6 +21,7 @@ exception: custom_pointer: カスタムポインターが見つかりません。 conflict: user_name_is_already_exists: そのユーザ名は既に使われています。 + custom_pointer_is_already_exists: カスタムポインターは既に存在します。 internal_server_error: unexpected_error: 予期しないエラーが発生しました。 - failed_to_upload_file: アップロードに失敗しました \ No newline at end of file + failed_to_upload_file: アップロードに失敗しました。 \ No newline at end of file diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy index a49446d5..2ec9cbb7 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/repository/CustomPointerRepositoryImpl_UT.groovy @@ -1,7 +1,8 @@ package dev.abelab.smartpointer.infrastructure.repository - +import dev.abelab.smartpointer.domain.model.CustomPointerModel import dev.abelab.smartpointer.domain.repository.CustomPointerRepository +import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper import org.springframework.beans.factory.annotation.Autowired @@ -65,6 +66,33 @@ class CustomPointerRepositoryImpl_UT extends AbstractRepository_UT { "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000001" || false } + def "insert: カスタムポインターを作成"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + } + // @formatter:on + + final customPointer = CustomPointerModel.builder() + .id("00000000-0000-0000-0000-000000000000") + .roomId("00000000-0000-0000-0000-000000000000") + .label(RandomHelper.alphanumeric(10)) + .url(RandomHelper.alphanumeric(10)) + .build() + + when: + this.sut.insert(customPointer) + + then: + final createdCustomPointer = sql.firstRow("SELECT * FROM custom_pointer") + createdCustomPointer.id == customPointer.id + createdCustomPointer.room_id == customPointer.roomId + createdCustomPointer.label == customPointer.label + createdCustomPointer.url == customPointer.url + } + def "deleteByIdAndRoomId: ID、ルームIDからカスタムポインターを削除"() { given: // @formatter:off diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy index b09e5c6a..04fa1a1d 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/AbstractUseCase_UT.groovy @@ -7,6 +7,7 @@ import dev.abelab.smartpointer.domain.repository.TimerRepository import dev.abelab.smartpointer.domain.repository.UserRepository import dev.abelab.smartpointer.domain.service.TimerService import dev.abelab.smartpointer.domain.service.UserService +import dev.abelab.smartpointer.util.FileStorageUtil import org.spockframework.spring.SpringBean /** @@ -32,4 +33,7 @@ abstract class AbstractUseCase_UT extends AbstractSpecification { @SpringBean TimerService timerService = Mock() + @SpringBean + FileStorageUtil fileStorageUtil = Mock() + } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/CreateCustomPointersUseCase_UT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/CreateCustomPointersUseCase_UT.groovy new file mode 100644 index 00000000..a53c25df --- /dev/null +++ b/app/src/test/groovy/dev/abelab/smartpointer/usecase/custom_pointer/CreateCustomPointersUseCase_UT.groovy @@ -0,0 +1,65 @@ +package dev.abelab.smartpointer.usecase.custom_pointer + +import dev.abelab.smartpointer.domain.model.CustomPointerModel +import dev.abelab.smartpointer.domain.model.RoomModel +import dev.abelab.smartpointer.exception.BaseException +import dev.abelab.smartpointer.exception.ConflictException +import dev.abelab.smartpointer.exception.ErrorCode +import dev.abelab.smartpointer.exception.NotFoundException +import dev.abelab.smartpointer.helper.RandomHelper +import dev.abelab.smartpointer.usecase.AbstractUseCase_UT +import org.springframework.beans.factory.annotation.Autowired + +/** + * CreateCustomPointersUseCaseの単体テスト + */ +class CreateCustomPointersUseCase_UT extends AbstractUseCase_UT { + + @Autowired + CreateCustomPointersUseCase sut + + def "handle: カスタムポインターを作成"() { + given: + final room = RandomHelper.mock(RoomModel) + final customPointer = RandomHelper.mock(CustomPointerModel) + + when: + this.sut.handle(room.id, customPointer.id, customPointer.label, customPointer.url) + + then: + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.customPointerRepository.existsByIdAndRoomId(customPointer.id, room.id) >> false + 1 * this.fileStorageUtil.upload(_) + 1 * this.customPointerRepository.insert(_) + } + + def "handle: ルームが存在しない場合は404エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + final customPointer = RandomHelper.mock(CustomPointerModel) + + when: + this.sut.handle(room.id, customPointer.id, customPointer.label, customPointer.url) + + then: + 1 * this.roomRepository.existsById(room.id) >> false + final BaseException exception = thrown() + verifyException(exception, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) + } + + def "handle: カスタムポインターが既に存在する場合は409エラー"() { + given: + final room = RandomHelper.mock(RoomModel) + final customPointer = RandomHelper.mock(CustomPointerModel) + + when: + this.sut.handle(room.id, customPointer.id, customPointer.label, customPointer.url) + + then: + 1 * this.roomRepository.existsById(room.id) >> true + 1 * this.customPointerRepository.existsByIdAndRoomId(customPointer.id, room.id) >> true + final BaseException exception = thrown() + verifyException(exception, new ConflictException(ErrorCode.CUSTOM_POINTER_IS_ALREADY_EXISTS)) + } + +} From baf6d43f5a20e4228575bb80408c5aed0190036a Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 17:14:42 +0900 Subject: [PATCH 151/189] =?UTF-8?q?[chore]=20application-local.yml?= =?UTF-8?q?=E3=82=92ignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + app/src/main/resources/application-local.yml | 18 ------------------ 2 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 app/src/main/resources/application-local.yml diff --git a/.gitignore b/.gitignore index 9b512eaa..d389f586 100644 --- a/.gitignore +++ b/.gitignore @@ -62,6 +62,7 @@ local.properties out/ ### Application property ### +app/src/main/resources/application-local.yml app/src/main/resources/application-dev.yml app/src/main/resources/application-stage.yml app/src/main/resources/application-prod.yml diff --git a/app/src/main/resources/application-local.yml b/app/src/main/resources/application-local.yml deleted file mode 100644 index d29d4c39..00000000 --- a/app/src/main/resources/application-local.yml +++ /dev/null @@ -1,18 +0,0 @@ -spring: - datasource: - url: jdbc:mysql://localhost:3306/smartpointer?useSSL=false&allowPublicKeyRetrieval=true&enabledTLSProtocols=TLSv1.2 - username: smartpointer - password: smartpointer - driver-class-name: com.mysql.cj.jdbc.Driver - -auth: - jwt: - secret: 70gdy7X82ya650Vdhb8HqofHniMkPHTIYOIFJA1NKY4= - issuer: dev.abelab.smartpointer - -gcp: - project-id: GCP_PROJECT_ID - credentials-path: GCP_CREDENTIALS_PATH - cloud-storage: - enabled: false - bucket-name: GCP_BUCKET_NAME \ No newline at end of file From 96dc3c819e237a3bea78ff179250f49daddbfc9d Mon Sep 17 00:00:00 2001 From: averak Date: Sat, 12 Nov 2022 17:20:56 +0900 Subject: [PATCH 152/189] =?UTF-8?q?[test]=20=E3=82=AB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=A0=E3=83=9D=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=BC=E4=BD=9C?= =?UTF-8?q?=E6=88=90API=E3=81=AE=E7=B5=B1=E5=90=88=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomPointerController_IT.groovy | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy index fb82aca9..4b1b3543 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/CustomPointerController_IT.groovy @@ -2,6 +2,7 @@ package dev.abelab.smartpointer.infrastructure.api.controller import dev.abelab.smartpointer.domain.model.CustomPointerModel import dev.abelab.smartpointer.domain.model.RoomCustomPointersModel +import dev.abelab.smartpointer.exception.ConflictException import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper @@ -83,6 +84,68 @@ class CustomPointerController_IT extends AbstractController_IT { this.executeHttp(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) } + def "カスタムポインター作成API: 正常系 カスタムポインターを作成する"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + } + TableHelper.insert sql, "custom_pointer", { + id | room_id | label | url + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "" | "" + } + // @formatter:on + + when: + final query = + """ + mutation { + createCustomPointer(id: "00000000-0000-0000-0000-000000000001", roomId: "00000000-0000-0000-0000-000000000000", label: "A", content: "") + } + """ + final response = this.executeHttp(query, "createCustomPointer", String) + + then: + response == "00000000-0000-0000-0000-000000000001" + + final createdCustomPointer = sql.firstRow("SELECT * FROM custom_pointer WHERE id=:id", [id: "00000000-0000-0000-0000-000000000001"]) + createdCustomPointer.id == "00000000-0000-0000-0000-000000000001" + createdCustomPointer.room_id == "00000000-0000-0000-0000-000000000000" + createdCustomPointer.label == "A" + createdCustomPointer.url != null + + StepVerifier.create(this.roomCustomPointersFlux) + .expectNextMatches({ + it.customPointers*.id == ["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000001"] + }) + .thenCancel() + .verify() + } + + def "カスタムポインター作成API: 異常系 カスタムポインターが既に存在する場合は400エラー"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | "000000" + } + TableHelper.insert sql, "custom_pointer", { + id | room_id | label | url + "00000000-0000-0000-0000-000000000000" | "00000000-0000-0000-0000-000000000000" | "" | "" + } + // @formatter:on + + expect: + final query = + """ + mutation { + createCustomPointer(id: "00000000-0000-0000-0000-000000000000", roomId: "00000000-0000-0000-0000-000000000000", label: "A", content: "") + } + """ + final response = this.executeHttp(query, new ConflictException(ErrorCode.CUSTOM_POINTER_IS_ALREADY_EXISTS)) + } + def "カスタムポインター削除API: 正常系 カスタムポインターを削除する"() { given: // @formatter:off From 0decbd339ee72a02bcff4b9f43f8a3d6ee789d95 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 17:39:54 +0900 Subject: [PATCH 153/189] create credentials directory --- .gitignore | 2 ++ app/src/main/resources/credentials/.gitkeep | 0 2 files changed, 2 insertions(+) create mode 100644 app/src/main/resources/credentials/.gitkeep diff --git a/.gitignore b/.gitignore index d389f586..0ab728ae 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,8 @@ app/src/main/resources/application-local.yml app/src/main/resources/application-dev.yml app/src/main/resources/application-stage.yml app/src/main/resources/application-prod.yml +app/src/main/resources/credentials/**/* +!app/src/main/resources/credentials/.gitkeep ### Static contents ### app/src/main/resources/static/* diff --git a/app/src/main/resources/credentials/.gitkeep b/app/src/main/resources/credentials/.gitkeep new file mode 100644 index 00000000..e69de29b From 2a53fd28acdf2526308c91874d200ff96a83a747 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 17:42:10 +0900 Subject: [PATCH 154/189] fix pointers size --- desktop/packages/renderer/src/overlay/ArrowPointer.tsx | 4 ---- .../packages/renderer/src/overlay/CustomPointer.tsx | 2 -- .../packages/renderer/src/overlay/FingerPointer.tsx | 4 ---- .../packages/renderer/src/overlay/PointerWrapper.tsx | 10 ++++++++-- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/desktop/packages/renderer/src/overlay/ArrowPointer.tsx b/desktop/packages/renderer/src/overlay/ArrowPointer.tsx index c4302eba..864e50ca 100644 --- a/desktop/packages/renderer/src/overlay/ArrowPointer.tsx +++ b/desktop/packages/renderer/src/overlay/ArrowPointer.tsx @@ -15,10 +15,6 @@ export const ArrowPointer: FC<{ pointers: UpdatePointersMessage }> = ({ viewBox="0 0 44 58" fill="none" xmlns="http://www.w3.org/2000/svg" - style={{ - width: "auto", - height: "3em", - }} > ( diff --git a/desktop/packages/renderer/src/overlay/FingerPointer.tsx b/desktop/packages/renderer/src/overlay/FingerPointer.tsx index e298db48..67ce3278 100644 --- a/desktop/packages/renderer/src/overlay/FingerPointer.tsx +++ b/desktop/packages/renderer/src/overlay/FingerPointer.tsx @@ -13,10 +13,6 @@ export const FingerPointer: FC<{ pointers: UpdatePointersMessage }> = ({ viewBox="0 0 128 128" width="128" height="128" - style={{ - width: "auto", - height: "3em", - }} xmlns="http://www.w3.org/2000/svg" > = ({ pointers, renderPointer }) => { position="absolute" top="0" left="0" - fontSize="lg" + fontSize={`${Math.min(width, height) / 30}px`} w="fit-content" h="fit-content" align="end" @@ -58,7 +58,13 @@ export const PointerWrapper: FC = ({ pointers, renderPointer }) => { ${height / 2 + coordinate.y * height}px )`} > - {renderPointer(color)} + + {renderPointer(color)} + {pointers.length > 1 && ( From d32d0af7f9538ebb6b18f9eea57822051bd9816a Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 19:27:29 +0900 Subject: [PATCH 155/189] restrict custom pointer file count --- .../renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx b/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx index 71225e69..0f80ac09 100644 --- a/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx +++ b/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx @@ -48,6 +48,7 @@ export const CustomPointerTypeTabItem: FC<{ "image/png": [], "image/gif": [], }, + maxFiles: 1, onDrop: (acceptedFiles) => { const file = acceptedFiles[0]; if (file) { From f54e35996f5c395239b2a97efb5c1b8e5a45f6ed Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 19:27:50 +0900 Subject: [PATCH 156/189] restrict custom pointer file size --- .../renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx b/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx index 0f80ac09..7ce93da2 100644 --- a/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx +++ b/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx @@ -49,6 +49,7 @@ export const CustomPointerTypeTabItem: FC<{ "image/gif": [], }, maxFiles: 1, + maxSize: 5 * 1024 * 1024, // 5MB onDrop: (acceptedFiles) => { const file = acceptedFiles[0]; if (file) { From 244e67489f489d209578599c15e18f58ff8983b1 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sat, 12 Nov 2022 23:17:46 +0900 Subject: [PATCH 157/189] mutate and subscribe pointer type from desktop --- desktop/packages/main/src/controller/index.ts | 62 ++++++++++++++++--- desktop/packages/main/src/gql/gql.ts | 4 ++ desktop/packages/main/src/gql/graphql.ts | 29 ++++++++- desktop/packages/main/src/model/index.ts | 9 ++- desktop/packages/main/src/types.ts | 4 +- desktop/packages/main/src/view/tray.ts | 4 +- .../main/src/view/window/pointerOverlay.ts | 9 ++- 7 files changed, 102 insertions(+), 19 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 1fc5a020..0f3f7921 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -170,6 +170,33 @@ export const controller = { } ); + requestWs( + { + query: graphql(/* GraphQL */ ` + subscription SubscribeToPointerType($roomId: ID!) { + subscribeToPointerType(roomId: $roomId) + } + `), + variables: { + roomId: data.createRoom.id, + }, + }, + { + next(value) { + const data = value.data?.subscribeToPointerType; + if (data) { + model.selectedPointer(data); + + view.window.pointerOverlay.updatePointerType(); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + error() {}, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete() {}, + } + ); + view.tray.update(); await view.window.pointerOverlay.show(); await view.window.inviteLink.show(); @@ -219,13 +246,6 @@ export const controller = { view.window.pointerOverlay.updatePointer(); }, - - selectedPointer: (selectedPointerType: PointerType) => { - model.selectedPointer(selectedPointerType); - - view.window.pointerOverlay.updatePointerType(); - }, - showInviteLink: async () => { await view.window.inviteLink.show(); }, @@ -259,6 +279,34 @@ export const controller = { view.window.customPointerType.updateCustomPointerType(); }, + requestChangePointerType: (pointerTypeId: PointerType["id"]) => { + if (model.state.status !== "CREATED") { + throw new Error("Cannot change pointer type when not in created state"); + } + + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation ChangePointerType($pointerType: String!, $roomId: ID!) { + changePointerType(pointerType: $pointerType, roomId: $roomId) + } + `), + variables: { + pointerType: pointerTypeId, + roomId: model.state.room.id, + }, + }, + { + // eslint-disable-next-line @typescript-eslint/no-empty-function + next: () => {}, + // eslint-disable-next-line @typescript-eslint/no-empty-function + error: () => {}, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete: () => {}, + } + ); + }, + updateCustomPointerType: (customPointerType: CustomPointerType) => { model.updatedCustomPointerType(customPointerType); diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts index 5dd87e7e..aaa8f35c 100644 --- a/desktop/packages/main/src/gql/gql.ts +++ b/desktop/packages/main/src/gql/gql.ts @@ -7,14 +7,18 @@ const documents = { "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n ": types.SubscribeToSlideControlDocument, "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n ": types.SubscribeToPointerDocument, "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n ": types.SubscribeToPointerDisconnectEventDocument, + "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n ": types.SubscribeToPointerTypeDocument, "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n ": types.DeleteRoomDocument, + "\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n ": types.ChangePointerTypeDocument, }; export function graphql(source: "\n mutation CreateRoom {\n createRoom(pointerType: \"SPOTLIGHT\") {\n id\n passcode\n }\n }\n "): (typeof documents)["\n mutation CreateRoom {\n createRoom(pointerType: \"SPOTLIGHT\") {\n id\n passcode\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToSlideControl($roomId: ID!) {\n subscribeToSlideControl(roomId: $roomId)\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "]; +export function graphql(source: "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "]; export function graphql(source: "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "): (typeof documents)["\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "]; +export function graphql(source: "\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n "): (typeof documents)["\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n "]; export function graphql(source: string): unknown; export function graphql(source: string) { diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index b3a23112..dc5fe4cd 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -49,6 +49,8 @@ export type Mutation = { __typename?: 'Mutation'; /** ポインタータイプ変更API */ changePointerType: Scalars['String']; + /** カスタムポインター作成API */ + createCustomPointer: Scalars['ID']; /** ルーム作成API */ createRoom: Room; /** カスタムポインター削除API */ @@ -82,6 +84,14 @@ export type MutationChangePointerTypeArgs = { }; +export type MutationCreateCustomPointerArgs = { + content: Scalars['String']; + id: Scalars['ID']; + label: Scalars['String']; + roomId: Scalars['ID']; +}; + + export type MutationCreateRoomArgs = { pointerType: Scalars['String']; }; @@ -339,6 +349,13 @@ export type SubscribeToPointerDisconnectEventSubscriptionVariables = Exact<{ export type SubscribeToPointerDisconnectEventSubscription = { __typename?: 'Subscription', subscribeToPointerDisconnectEvent: { __typename?: 'User', id: string } }; +export type SubscribeToPointerTypeSubscriptionVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type SubscribeToPointerTypeSubscription = { __typename?: 'Subscription', subscribeToPointerType: string }; + export type DeleteRoomMutationVariables = Exact<{ roomId: Scalars['ID']; }>; @@ -346,9 +363,19 @@ export type DeleteRoomMutationVariables = Exact<{ export type DeleteRoomMutation = { __typename?: 'Mutation', deleteRoom: string }; +export type ChangePointerTypeMutationVariables = Exact<{ + pointerType: Scalars['String']; + roomId: Scalars['ID']; +}>; + + +export type ChangePointerTypeMutation = { __typename?: 'Mutation', changePointerType: string }; + export const CreateRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"StringValue","value":"SPOTLIGHT","block":false}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"passcode"}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToSlideControlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToSlideControl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToSlideControl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const SubscribeToPointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orientation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"alpha"}},{"kind":"Field","name":{"kind":"Name","value":"beta"}},{"kind":"Field","name":{"kind":"Name","value":"gamma"}}]}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToPointerDisconnectEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerDisconnectEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerDisconnectEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; -export const DeleteRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; \ No newline at end of file +export const SubscribeToPointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const DeleteRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const ChangePointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ChangePointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"changePointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}}},{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 7a14304d..745a086f 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -1,6 +1,5 @@ import { PointerOrientation, - builtInPointers, PointerType, User, CustomPointerType, @@ -45,7 +44,7 @@ export const model = { room, joinedUsers: new Map(), activePointers: new Map(), - selectedPointerType: builtInPointers[0]!, + selectedPointerTypeId: "SPOTLIGHT", displayToShowPointer, }; }, @@ -61,7 +60,7 @@ export const model = { room: undefined, joinedUsers: undefined, activePointers: undefined, - selectedPointerType: undefined, + selectedPointerTypeId: undefined, displayToShowPointer: undefined, }; }, @@ -121,14 +120,14 @@ export const model = { }; }, - selectedPointer: (selectedPointerType: PointerType) => { + selectedPointer: (selectedPointerTypeId: PointerType["id"]) => { if (state.status !== "CREATED") { throw new Error("Cannot select pointer when not in CREATED state"); } state = { ...state, - selectedPointerType, + selectedPointerTypeId, }; }, diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index 1fd2fa99..6ea267c6 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -23,7 +23,7 @@ export type State = Readonly< room?: undefined; joinedUsers?: undefined; activePointers?: undefined; - selectedPointerType?: undefined; + selectedPointerTypeId?: undefined; displayToShowPointer?: undefined; } | { @@ -31,7 +31,7 @@ export type State = Readonly< room: Room; joinedUsers: Map; activePointers: Map; - selectedPointerType: PointerType; + selectedPointerTypeId: PointerType["id"]; displayToShowPointer: Display["id"]; } ) & { diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index fd253fbc..e46d6fc5 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -45,8 +45,8 @@ const pointerListTemplate: MenuTemplateWithState< .map((pointer) => ({ label: pointer.name, type: "radio", - checked: state.selectedPointerType.id === pointer.id, - click: () => controller.selectedPointer(pointer), + checked: state.selectedPointerTypeId === pointer.id, + click: () => controller.requestChangePointerType(pointer.id), })), }, ]; diff --git a/desktop/packages/main/src/view/window/pointerOverlay.ts b/desktop/packages/main/src/view/window/pointerOverlay.ts index 9ae47cc4..0690a753 100644 --- a/desktop/packages/main/src/view/window/pointerOverlay.ts +++ b/desktop/packages/main/src/view/window/pointerOverlay.ts @@ -1,4 +1,5 @@ import { + builtInPointers, GetPointerResult, PointerType, UpdatePointersMessage, @@ -103,7 +104,9 @@ export const pointerOverlay = { return; } - const message: PointerType = state.selectedPointerType; + const message: PointerType = builtInPointers + .concat(state.customPointerTypes) + .find((pointerType) => pointerType.id === state.selectedPointerTypeId)!; overlayWindow.webContents.send("onUpdatePointerType", message); }, @@ -160,6 +163,8 @@ ipcMain.handle("getPointers", (): GetPointerResult => { }, }) ), - pointerType: state.selectedPointerType, + pointerType: builtInPointers + .concat(state.customPointerTypes) + .find((pointerType) => pointerType.id === state.selectedPointerTypeId)!, }; }); From b8735a6a2a296c2318e33fc9ac3eea0ece0474aa Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sat, 12 Nov 2022 23:50:29 +0900 Subject: [PATCH 158/189] =?UTF-8?q?feat:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E4=B8=80=E8=A6=A7=20>=20window=20=E8=A1=A8=E7=A4=BA=E9=96=A2?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/controller/index.ts | 4 ++ desktop/packages/main/src/view/index.ts | 2 + .../packages/main/src/view/window/userList.ts | 44 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 desktop/packages/main/src/view/window/userList.ts diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 1fc5a020..f857735a 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -280,4 +280,8 @@ export const controller = { view.tray.update(); }, + + showUserList: () => { + view.window.userList.show(); + }, }; diff --git a/desktop/packages/main/src/view/index.ts b/desktop/packages/main/src/view/index.ts index b236ad8d..2fae8485 100644 --- a/desktop/packages/main/src/view/index.ts +++ b/desktop/packages/main/src/view/index.ts @@ -2,12 +2,14 @@ import { tray } from "./tray"; import { customPointerType } from "./window/customPointerType"; import { inviteLink } from "./window/inviteLink"; import { pointerOverlay } from "./window/pointerOverlay"; +import { userList } from "./window/userList"; export const view = { window: { customPointerType, inviteLink, pointerOverlay, + userList, }, tray, }; diff --git a/desktop/packages/main/src/view/window/userList.ts b/desktop/packages/main/src/view/window/userList.ts new file mode 100644 index 00000000..9529788e --- /dev/null +++ b/desktop/packages/main/src/view/window/userList.ts @@ -0,0 +1,44 @@ +import { User } from "@smartpointer-desktop/shared"; +import { app, BrowserWindow, ipcMain } from "electron"; +import { join } from "node:path"; + +import { loadFile } from "@/utils/window/loadFile"; + +let userListWindow: BrowserWindow | null = null; + +export const userList = { + show: async () => { + if (userListWindow === null || userListWindow.isDestroyed()) { + userListWindow = new BrowserWindow({ + width: 400, + height: 600, + title: "参加者一覧 - スマートポインター", + show: false, + webPreferences: { + preload: join( + app.getAppPath(), + "packages", + "preload", + "dist", + "index.cjs" + ), + }, + }); + + await loadFile(userListWindow, "userList.html"); + } + + userListWindow.removeMenu(); + userListWindow.show(); + }, + + close: () => { + userListWindow?.close(); + }, +}; + +ipcMain.handle("getUsers", () => { + // TODO: ここで、ユーザー一覧を取得する + const users: User[] = [{ id: "1", name: "太郎" }]; + return users; +}); From 53ea5442bcce80e790a3bc9e14c36b213b4658ae Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sat, 12 Nov 2022 23:50:47 +0900 Subject: [PATCH 159/189] =?UTF-8?q?feat:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E4=B8=80=E8=A6=A7=20>=20tray=20menu=20=E3=81=AE=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/types.ts | 2 -- desktop/packages/main/src/view/tray.ts | 10 +++------- desktop/packages/preload/src/index.ts | 4 ++++ 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/desktop/packages/main/src/types.ts b/desktop/packages/main/src/types.ts index 1fd2fa99..a8eeda0b 100644 --- a/desktop/packages/main/src/types.ts +++ b/desktop/packages/main/src/types.ts @@ -21,7 +21,6 @@ export type State = Readonly< | { status: "READY" | "CREATING"; room?: undefined; - joinedUsers?: undefined; activePointers?: undefined; selectedPointerType?: undefined; displayToShowPointer?: undefined; @@ -29,7 +28,6 @@ export type State = Readonly< | { status: "CREATED"; room: Room; - joinedUsers: Map; activePointers: Map; selectedPointerType: PointerType; displayToShowPointer: Display["id"]; diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index fd253fbc..30605d4c 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -53,15 +53,11 @@ const pointerListTemplate: MenuTemplateWithState< const memberListTemplate: MenuTemplateWithState< State & { status: "CREATED" } -> = (state) => [ +> = () => [ { - label: "参加者一覧", + label: "参加者一覧を表示", accelerator: "CmdOrCtrl+L", - // TODO: チェックリストに変更する - submenu: - Array.from(state.joinedUsers?.values() ?? []).map((user) => ({ - label: user.name, - })) ?? [], + click: controller.showUserList, }, ]; diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index 89d6bc4b..9301099b 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -60,3 +60,7 @@ export const removeCustomPointerType = ( ) => { ipcRenderer.send("removeCustomPointerType", customPointerType); }; + +export const getUsers = async (): Promise => { + // TODO: ユーザー一覧を取得用 IPC通信の実装 +}; From 8d5348d5f2b1235907ad3afc9f977d7f03dcfd71 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sat, 12 Nov 2022 23:53:09 +0900 Subject: [PATCH 160/189] =?UTF-8?q?feat:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=82=AB=E3=83=A9=E3=83=BC=E5=8F=96=E5=BE=97=E7=94=A8=E3=82=AB?= =?UTF-8?q?=E3=82=B9=E3=82=BF=E3=83=A0=20hooks=20=E3=81=AE=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../renderer/src/overlay/PointerWrapper.tsx | 33 +++------------ .../renderer/src/util/useUserColor.ts | 40 +++++++++++++++++++ 2 files changed, 45 insertions(+), 28 deletions(-) create mode 100644 desktop/packages/renderer/src/util/useUserColor.ts diff --git a/desktop/packages/renderer/src/overlay/PointerWrapper.tsx b/desktop/packages/renderer/src/overlay/PointerWrapper.tsx index 8c62c36a..a7f0d687 100644 --- a/desktop/packages/renderer/src/overlay/PointerWrapper.tsx +++ b/desktop/packages/renderer/src/overlay/PointerWrapper.tsx @@ -1,22 +1,9 @@ -import { Box, Flex, Text, useToken } from "@chakra-ui/react"; +import { Box, Flex, Text } from "@chakra-ui/react"; import { useWindowSize } from "@react-hook/window-size"; import type { UpdatePointersMessage } from "@smartpointer-desktop/shared"; import type { FC, ReactNode } from "react"; -/** - * - * @see https://gist.github.com/0x263b/2bdd90886c2036a1ad5bcf06d6e6fb37 - */ -function randomColorFromList(str: string, list: string[]): string { - let index = 0; - if (str.length === 0) return list[0]!; - for (let i = 0; i < str.length; i += 1) { - index = str.charCodeAt(i) + ((index << 5) - index); - index = index & index; - } - index = ((index % list.length) + list.length) % list.length; - return list[index]!; -} +import { useUserColor } from "@/util/useUserColor"; type Props = { pointers: UpdatePointersMessage; @@ -25,23 +12,13 @@ type Props = { export const PointerWrapper: FC = ({ pointers, renderPointer }) => { const [width, height] = useWindowSize(); - const colors = useToken("colors", [ - "gray.500", - "red.500", - "orange.500", - "yellow.500", - "green.500", - "teal.500", - "blue.500", - "cyan.500", - "purple.500", - "pink.500", - ]); + + const getUserColor = useUserColor(); return ( {pointers.map(({ user, coordinate }) => { - const color = randomColorFromList(user.id, colors); + const color = getUserColor(user.id); return ( string) => { + const colors = useToken("colors", [ + "gray.500", + "red.500", + "orange.500", + "yellow.500", + "green.500", + "teal.500", + "blue.500", + "cyan.500", + "purple.500", + "pink.500", + ]); + + const getUserColor = useCallback( + (userId: User["id"]) => randomColorFromList(userId, colors), + [colors] + ); + + return getUserColor; +}; From f32aa434d1cdc456568b35d7a2b30413b7c2844c Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sat, 12 Nov 2022 23:53:56 +0900 Subject: [PATCH 161/189] =?UTF-8?q?feat:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E4=B8=80=E8=A6=A7=20window=20=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/renderer/src/userList/main.tsx | 16 ++++++++++++++++ desktop/packages/renderer/src/userList/theme.ts | 14 ++++++++++++++ desktop/packages/renderer/userList.html | 16 ++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 desktop/packages/renderer/src/userList/main.tsx create mode 100644 desktop/packages/renderer/src/userList/theme.ts create mode 100644 desktop/packages/renderer/userList.html diff --git a/desktop/packages/renderer/src/userList/main.tsx b/desktop/packages/renderer/src/userList/main.tsx new file mode 100644 index 00000000..5bea7100 --- /dev/null +++ b/desktop/packages/renderer/src/userList/main.tsx @@ -0,0 +1,16 @@ +import { ChakraProvider } from "@chakra-ui/react"; +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; + +import { App } from "./App"; +import { theme } from "./theme"; + +// HTML で定義されているので disable +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +createRoot(document.getElementById("root")!).render( + + + + + +); diff --git a/desktop/packages/renderer/src/userList/theme.ts b/desktop/packages/renderer/src/userList/theme.ts new file mode 100644 index 00000000..d2643eb2 --- /dev/null +++ b/desktop/packages/renderer/src/userList/theme.ts @@ -0,0 +1,14 @@ +import { extendTheme } from "@chakra-ui/react"; + +const styles = { + global: { + "html, body, #root": { + w: "100vw", + h: "100vh", + }, + }, +}; + +export const theme = extendTheme({ + styles, +}); diff --git a/desktop/packages/renderer/userList.html b/desktop/packages/renderer/userList.html new file mode 100644 index 00000000..a1cd96a1 --- /dev/null +++ b/desktop/packages/renderer/userList.html @@ -0,0 +1,16 @@ + + + + + + + 参加者一覧 - スマートポインター + + +
+ + + From 0e04fd9b46847fa500b355c3eef969e065fed51d Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sat, 12 Nov 2022 23:55:24 +0900 Subject: [PATCH 162/189] fix: vite.config > alias --- desktop/packages/renderer/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/packages/renderer/vite.config.ts b/desktop/packages/renderer/vite.config.ts index 10698944..a834630c 100644 --- a/desktop/packages/renderer/vite.config.ts +++ b/desktop/packages/renderer/vite.config.ts @@ -12,7 +12,7 @@ export default defineConfig({ root: PACKAGE_ROOT, resolve: { alias: { - "/@/": join(PACKAGE_ROOT, "src") + "/", + "@/": join(PACKAGE_ROOT, "src") + "/", }, }, base: "", From 4bd5e9c5621b754104e50c7f532972ffbb960056 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sat, 12 Nov 2022 23:56:00 +0900 Subject: [PATCH 163/189] =?UTF-8?q?feat:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E4=B8=80=E8=A6=A7window=20=E3=81=AEUI=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packages/renderer/src/userList/App.tsx | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 desktop/packages/renderer/src/userList/App.tsx diff --git a/desktop/packages/renderer/src/userList/App.tsx b/desktop/packages/renderer/src/userList/App.tsx new file mode 100644 index 00000000..a8b2d37a --- /dev/null +++ b/desktop/packages/renderer/src/userList/App.tsx @@ -0,0 +1,41 @@ +import { HStack, Icon, StackDivider, VStack } from "@chakra-ui/react"; +import type { User } from "@smartpointer-desktop/shared"; +import { FC, useEffect, useState } from "react"; + +import { useUserColor } from "@/util/useUserColor"; + +export const App: FC = () => { + const [users, setUsers] = useState([]); + + useEffect(() => { + document.title = `参加者一覧 (${users.length})`; + }, [users.length]); + + useEffect(() => { + // TODO: query users from main process + }, []); + + useEffect(() => { + // TODO: subscribe users from main process + }, []); + + const getUserColor = useUserColor(); + + return ( + } + align="start" + > + {users.map((user) => ( + + + + +

{user.name}

+
+ ))} +
+ ); +}; From d537de662c5a41247cba1d2218656c9eba3c45ed Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sun, 13 Nov 2022 00:09:11 +0900 Subject: [PATCH 164/189] fix: type error --- desktop/packages/main/src/controller/index.ts | 8 ------ desktop/packages/main/src/model/index.ts | 28 ------------------- .../packages/renderer/src/userList/App.tsx | 2 ++ 3 files changed, 2 insertions(+), 36 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index f857735a..64fd2e91 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -175,14 +175,6 @@ export const controller = { await view.window.inviteLink.show(); }, - joinedRoom: (user: User) => { - model.joinedRoom(user); - }, - - leftRoom: (user: User) => { - model.leftRoom(user); - }, - closeRoom: async () => { if (model.state.status !== "CREATED") { throw new Error("Cannot close room when not in created state"); diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index 7a14304d..41200266 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -43,7 +43,6 @@ export const model = { ...state, status: "CREATED", room, - joinedUsers: new Map(), activePointers: new Map(), selectedPointerType: builtInPointers[0]!, displayToShowPointer, @@ -59,39 +58,12 @@ export const model = { ...state, status: "READY", room: undefined, - joinedUsers: undefined, activePointers: undefined, selectedPointerType: undefined, displayToShowPointer: undefined, }; }, - joinedRoom: (user: User) => { - if (state.status !== "CREATED") { - throw new Error("Cannot join room when not in CREATED state"); - } - - state = { - ...state, - joinedUsers: new Map(state.joinedUsers).set(user.id, user), - }; - }, - - leftRoom: (user: User) => { - if (state.status !== "CREATED") { - throw new Error("Cannot leave room when not in CREATED state"); - } - - const joinedUsers = new Map(state.joinedUsers); - - joinedUsers.delete(user.id); - - state = { - ...state, - joinedUsers, - }; - }, - updatePointer: (user: User, orientation: PointerOrientation) => { if (state.status !== "CREATED") { throw new Error("Cannot update pointer when not in CREATED state"); diff --git a/desktop/packages/renderer/src/userList/App.tsx b/desktop/packages/renderer/src/userList/App.tsx index a8b2d37a..64c104d4 100644 --- a/desktop/packages/renderer/src/userList/App.tsx +++ b/desktop/packages/renderer/src/userList/App.tsx @@ -13,10 +13,12 @@ export const App: FC = () => { useEffect(() => { // TODO: query users from main process + setUsers([]); }, []); useEffect(() => { // TODO: subscribe users from main process + setUsers([]); }, []); const getUserColor = useUserColor(); From f63b044a7c2f3d98952725144d4787cca28dece8 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sun, 13 Nov 2022 00:34:04 +0900 Subject: [PATCH 165/189] =?UTF-8?q?change:=20input=20=E5=86=85=E8=A6=81?= =?UTF-8?q?=E7=B4=A0=E3=81=8C=E3=82=B3=E3=83=94=E3=83=BC=E3=83=9C=E3=82=BF?= =?UTF-8?q?=E3=83=B3=E3=81=AB=E8=A2=AB=E3=82=89=E3=81=AA=E3=81=84=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B=20#321?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx b/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx index e61c8088..7712be57 100644 --- a/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx +++ b/desktop/packages/renderer/src/link/InviteLink/Clipboard.tsx @@ -27,7 +27,7 @@ export const Clipboard: FC = ({ title, text }) => {
- + } aria-label="ポインターを切り替える" borderRadius="full" @@ -200,11 +300,55 @@ export const Pointer: FC = ({ authData }) => { key={pointer.id} aria-label={pointer.label} width="full" + h="16" onClick={() => { - setPointerType(pointer); onClose(); + requestWs( + { + query: graphql(/* GraphQL */ ` + mutation ChangePointerType( + $roomId: ID! + $pointerType: String! + ) { + changePointerType( + roomId: $roomId + pointerType: $pointerType + ) + } + `), + variables: { + roomId: authData.roomId, + pointerType: pointer.id, + }, + }, + { + next: ({ errors }) => { + if (errors) { + for (const error of errors) { + toast({ + title: "エラーが発生しました", + description: error.message, + status: "error", + }); + } + } + }, + error: (err) => { + if (err instanceof Error) { + toast({ + title: "エラーが発生しました", + description: err.message, + status: "error", + duration: 9000, + isClosable: true, + }); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete: () => {}, + } + ); }} - h="16" > diff --git a/app/src/main/pointer/src/gql/gql.ts b/app/src/main/pointer/src/gql/gql.ts index ca89d360..d6fd285b 100644 --- a/app/src/main/pointer/src/gql/gql.ts +++ b/app/src/main/pointer/src/gql/gql.ts @@ -6,6 +6,9 @@ const documents = { "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n user {\n id\n }\n }\n }\n ": types.JoinRoomDocument, "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n ": types.GoNextSlideDocument, "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n ": types.GoPreviousSlideDocument, + "\n query GetPointerType($roomId: ID!) {\n getPointerType(roomId: $roomId)\n }\n ": types.GetPointerTypeDocument, + "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n ": types.SubscribeToPointerTypeDocument, + "\n mutation ChangePointerType(\n $roomId: ID!\n $pointerType: String!\n ) {\n changePointerType(\n roomId: $roomId\n pointerType: $pointerType\n )\n }\n ": types.ChangePointerTypeDocument, "\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n ": types.StartTimerDocument, "\n mutation ResumeTime($accessToken: String!) {\n resumeTimer(accessToken: $accessToken) {\n status\n }\n }\n ": types.ResumeTimeDocument, "\n mutation PauseTimer($accessToken: String!) {\n pauseTimer(accessToken: $accessToken) {\n status\n }\n }\n ": types.PauseTimerDocument, @@ -19,6 +22,9 @@ const documents = { export function graphql(source: "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n user {\n id\n }\n }\n }\n "): (typeof documents)["\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n user {\n id\n }\n }\n }\n "]; export function graphql(source: "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "]; export function graphql(source: "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "]; +export function graphql(source: "\n query GetPointerType($roomId: ID!) {\n getPointerType(roomId: $roomId)\n }\n "): (typeof documents)["\n query GetPointerType($roomId: ID!) {\n getPointerType(roomId: $roomId)\n }\n "]; +export function graphql(source: "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "]; +export function graphql(source: "\n mutation ChangePointerType(\n $roomId: ID!\n $pointerType: String!\n ) {\n changePointerType(\n roomId: $roomId\n pointerType: $pointerType\n )\n }\n "): (typeof documents)["\n mutation ChangePointerType(\n $roomId: ID!\n $pointerType: String!\n ) {\n changePointerType(\n roomId: $roomId\n pointerType: $pointerType\n )\n }\n "]; export function graphql(source: "\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n "]; export function graphql(source: "\n mutation ResumeTime($accessToken: String!) {\n resumeTimer(accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation ResumeTime($accessToken: String!) {\n resumeTimer(accessToken: $accessToken) {\n status\n }\n }\n "]; export function graphql(source: "\n mutation PauseTimer($accessToken: String!) {\n pauseTimer(accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation PauseTimer($accessToken: String!) {\n pauseTimer(accessToken: $accessToken) {\n status\n }\n }\n "]; diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index ae99f9ea..47c9dbdd 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -49,6 +49,8 @@ export type Mutation = { __typename?: 'Mutation'; /** ポインタータイプ変更API */ changePointerType: Scalars['String']; + /** カスタムポインター作成API */ + createCustomPointer: Scalars['ID']; /** ルーム作成API */ createRoom: Room; /** カスタムポインター削除API */ @@ -82,6 +84,14 @@ export type MutationChangePointerTypeArgs = { }; +export type MutationCreateCustomPointerArgs = { + content: Scalars['String']; + id: Scalars['ID']; + label: Scalars['String']; + roomId: Scalars['ID']; +}; + + export type MutationCreateRoomArgs = { pointerType: Scalars['String']; }; @@ -336,6 +346,28 @@ export type GoPreviousSlideMutationVariables = Exact<{ export type GoPreviousSlideMutation = { __typename?: 'Mutation', goPreviousSlide: SlideControl }; +export type GetPointerTypeQueryVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type GetPointerTypeQuery = { __typename?: 'Query', getPointerType: string }; + +export type SubscribeToPointerTypeSubscriptionVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type SubscribeToPointerTypeSubscription = { __typename?: 'Subscription', subscribeToPointerType: string }; + +export type ChangePointerTypeMutationVariables = Exact<{ + roomId: Scalars['ID']; + pointerType: Scalars['String']; +}>; + + +export type ChangePointerTypeMutation = { __typename?: 'Mutation', changePointerType: string }; + export type StartTimerMutationVariables = Exact<{ inputTime: Scalars['Int']; accessToken: Scalars['String']; @@ -400,6 +432,9 @@ export type DisconnectPointerMutation = { __typename?: 'Mutation', disconnectPoi export const JoinRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"JoinRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"joinRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"passcode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}}},{"kind":"Argument","name":{"kind":"Name","value":"userName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tokenType"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"ttl"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const GoNextSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoNextSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goNextSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; export const GoPreviousSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoPreviousSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goPreviousSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; +export const GetPointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetPointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getPointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const SubscribeToPointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const ChangePointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ChangePointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"changePointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}}}]}]}}]} as unknown as DocumentNode; export const StartTimerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"StartTimer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"inputTime"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"startTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"inputTime"},"value":{"kind":"Variable","name":{"kind":"Name","value":"inputTime"}}},{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; export const ResumeTimeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ResumeTime"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"resumeTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; export const PauseTimerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"PauseTimer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"pauseTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; From 2c416682f642805e2f73a8be56240aa075257f27 Mon Sep 17 00:00:00 2001 From: averak Date: Sun, 13 Nov 2022 00:44:36 +0900 Subject: [PATCH 168/189] =?UTF-8?q?[feat]=20=E3=83=AB=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E7=B5=82=E4=BA=86=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E8=B3=BC?= =?UTF-8?q?=E8=AA=ADAPI=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GraphQLSubscriptionConfig.java | 10 +++++++ .../domain/model/RoomFinishEventModel.java | 22 ++++++++++++++++ .../api/controller/RoomController.java | 26 +++++++++++++++++++ .../main/resources/graphql/schema.graphqls | 10 +++++++ 4 files changed, 68 insertions(+) create mode 100644 app/src/main/java/dev/abelab/smartpointer/domain/model/RoomFinishEventModel.java diff --git a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java index 3a068f80..2340a40b 100644 --- a/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java +++ b/app/src/main/java/dev/abelab/smartpointer/config/GraphQLSubscriptionConfig.java @@ -14,6 +14,16 @@ @Configuration public class GraphQLSubscriptionConfig { + @Bean + public Sinks.Many roomFinishEventSink() { + return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); + } + + @Bean + public Flux roomFinishEventFlux(final Sinks.Many roomFinishEventSink) { + return roomFinishEventSink.asFlux(); + } + @Bean public Sinks.Many timerSink() { return Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); diff --git a/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomFinishEventModel.java b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomFinishEventModel.java new file mode 100644 index 00000000..525fa82e --- /dev/null +++ b/app/src/main/java/dev/abelab/smartpointer/domain/model/RoomFinishEventModel.java @@ -0,0 +1,22 @@ +package dev.abelab.smartpointer.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ルーム終了イベントモデル + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class RoomFinishEventModel { + + /** + * ルームID + */ + String roomId; + +} diff --git a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java index 60c2d881..7a327e98 100644 --- a/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java +++ b/app/src/main/java/dev/abelab/smartpointer/infrastructure/api/controller/RoomController.java @@ -1,13 +1,18 @@ package dev.abelab.smartpointer.infrastructure.api.controller; +import org.reactivestreams.Publisher; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.SubscriptionMapping; import org.springframework.stereotype.Controller; +import dev.abelab.smartpointer.domain.model.RoomFinishEventModel; import dev.abelab.smartpointer.infrastructure.api.type.Room; import dev.abelab.smartpointer.usecase.room.CreateRoomUseCase; import dev.abelab.smartpointer.usecase.room.DeleteRoomUseCase; import lombok.RequiredArgsConstructor; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Sinks; /** * ルームコントローラ @@ -16,6 +21,10 @@ @RequiredArgsConstructor public class RoomController { + private final Flux roomFinishEventFlux; + + private final Sinks.Many roomFinishEventSink; + private final CreateRoomUseCase createRoomUseCase; private final DeleteRoomUseCase deleteRoomUseCase; @@ -44,7 +53,24 @@ public String deleteRoom( // @Argument final String roomId // ) { this.deleteRoomUseCase.handle(roomId); + this.roomFinishEventSink.tryEmitNext(new RoomFinishEventModel(roomId)); + return roomId; } + /** + * ルーム終了イベント購読API + * + * @param roomId ルームID + * @return ルームID + */ + @SubscriptionMapping + public Publisher subscribeToRoomFinishEvent( // + @Argument final String roomId // + ) { + return this.roomFinishEventFlux // + .filter(roomFinishEventModel -> roomFinishEventModel.getRoomId().equals(roomId)) // + .map(RoomFinishEventModel::getRoomId); + } + } diff --git a/app/src/main/resources/graphql/schema.graphqls b/app/src/main/resources/graphql/schema.graphqls index f1eb3cb0..d2b15aed 100644 --- a/app/src/main/resources/graphql/schema.graphqls +++ b/app/src/main/resources/graphql/schema.graphqls @@ -249,6 +249,16 @@ type Mutation { } type Subscription { + """ + ルーム終了イベント購読API + """ + subscribeToRoomFinishEvent( + """ + ルームID + """ + roomId: ID! + ): ID! + """ ユーザリスト購読API """ From d3823f1955750c71fee972f8e8f138ad8348b5bf Mon Sep 17 00:00:00 2001 From: averak Date: Sun, 13 Nov 2022 00:48:32 +0900 Subject: [PATCH 169/189] =?UTF-8?q?[test]=20=E3=83=AB=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E7=B5=82=E4=BA=86=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E8=B3=BC?= =?UTF-8?q?=E8=AA=ADAPI=E3=81=AE=E7=B5=B1=E5=90=88=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/RoomController_IT.groovy | 46 +++++++++++++++++++ .../api/controller/TimerController_IT.groovy | 1 - 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy index 41c5f52a..8dc6f583 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/RoomController_IT.groovy @@ -1,16 +1,27 @@ package dev.abelab.smartpointer.infrastructure.api.controller +import dev.abelab.smartpointer.domain.model.RoomFinishEventModel import dev.abelab.smartpointer.exception.ErrorCode import dev.abelab.smartpointer.exception.NotFoundException import dev.abelab.smartpointer.helper.RandomHelper import dev.abelab.smartpointer.helper.TableHelper import dev.abelab.smartpointer.infrastructure.api.type.Room +import org.springframework.beans.factory.annotation.Autowired +import reactor.core.publisher.Flux +import reactor.core.publisher.Sinks +import reactor.test.StepVerifier /** * RoomControllerの統合テスト */ class RoomController_IT extends AbstractController_IT { + @Autowired + Flux roomFinishEventFlux + + @Autowired + Sinks.Many roomFinishEventSink + def "ルーム作成API: 正常系 ルームを作成できる"() { when: final query = @@ -63,6 +74,13 @@ class RoomController_IT extends AbstractController_IT { final rooms = sql.rows("SELECT * FROM room") rooms*.id == ["00000000-0000-0000-0000-000000000001"] + + StepVerifier.create(this.roomFinishEventFlux) + .expectNextMatches({ + it.roomId == "00000000-0000-0000-0000-000000000000" + }) + .thenCancel() + .verify() } def "ルーム削除API: 異常系 ルームが存在しない場合は404エラー"() { @@ -84,4 +102,32 @@ class RoomController_IT extends AbstractController_IT { this.executeHttp(query, new NotFoundException(ErrorCode.NOT_FOUND_ROOM)) } + def "ルーム終了イベント購読API: 正常系 ルームの終了イベントを購読する"() { + given: + // @formatter:off + TableHelper.insert sql, "room", { + id | passcode + "00000000-0000-0000-0000-000000000000" | RandomHelper.numeric(6) + "00000000-0000-0000-0000-000000000001" | RandomHelper.numeric(6) + } + // @formatter:on + + final query = """ + subscription { + subscribeToRoomFinishEvent(roomId: "00000000-0000-0000-0000-000000000000") + } + """ + final response = this.executeWebSocketSubscription(query, "subscribeToRoomFinishEvent", String) + + when: + this.roomFinishEventSink.tryEmitNext(new RoomFinishEventModel("00000000-0000-0000-0000-000000000000")) + this.roomFinishEventSink.tryEmitNext(new RoomFinishEventModel("00000000-0000-0000-0000-000000000001")) + + then: + StepVerifier.create(response) + .expectNext("00000000-0000-0000-0000-000000000000") + .thenCancel() + .verify() + } + } diff --git a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy index 51e543d8..8dc8b177 100644 --- a/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy +++ b/app/src/test/groovy/dev/abelab/smartpointer/infrastructure/api/controller/TimerController_IT.groovy @@ -383,7 +383,6 @@ class TimerController_IT extends AbstractController_IT { } // @formatter:on - expect: final query = """ From 28ad20c592a9b04f5b061b1eadf919823f68d47c Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sun, 13 Nov 2022 01:16:40 +0900 Subject: [PATCH 170/189] =?UTF-8?q?feat:=20query=20=E3=83=A6=E3=83=BC?= =?UTF-8?q?=E3=82=B6=E4=B8=80=E8=A6=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desktop/packages/main/src/controller/index.ts | 36 +++++++++++++++++++ .../packages/main/src/view/window/userList.ts | 11 +++--- desktop/packages/preload/src/index.ts | 11 ++++-- .../packages/renderer/src/userList/App.tsx | 8 ++--- 4 files changed, 56 insertions(+), 10 deletions(-) diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index b1a25dae..6e4f0365 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -324,4 +324,40 @@ export const controller = { showUserList: () => { view.window.userList.show(); }, + + requestUserList: () => { + if (model.state.status !== "CREATED") { + throw new Error("Cannot request user list when not in created state"); + } + + requestWs( + { + query: graphql(/* GraphQL */ ` + query GetUsers($roomId: ID!) { + getUsers(roomId: $roomId) { + users { + id + name + } + } + } + `), + variables: { + roomId: model.state.room.id, + }, + }, + { + next(value) { + const data = value.data?.getUsers; + if (data) { + view.window.userList.updateUsers(data.users); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + error() {}, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete() {}, + } + ); + }, }; diff --git a/desktop/packages/main/src/view/window/userList.ts b/desktop/packages/main/src/view/window/userList.ts index 9529788e..c69fe0a9 100644 --- a/desktop/packages/main/src/view/window/userList.ts +++ b/desktop/packages/main/src/view/window/userList.ts @@ -2,6 +2,7 @@ import { User } from "@smartpointer-desktop/shared"; import { app, BrowserWindow, ipcMain } from "electron"; import { join } from "node:path"; +import { controller } from "@/controller"; import { loadFile } from "@/utils/window/loadFile"; let userListWindow: BrowserWindow | null = null; @@ -35,10 +36,12 @@ export const userList = { close: () => { userListWindow?.close(); }, + + updateUsers: (users: User[]) => { + userListWindow?.webContents.send("onUpdateUsers", users); + }, }; -ipcMain.handle("getUsers", () => { - // TODO: ここで、ユーザー一覧を取得する - const users: User[] = [{ id: "1", name: "太郎" }]; - return users; +ipcMain.on("requestUsers", () => { + controller.requestUserList(); }); diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index 9301099b..dbb785b9 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -3,6 +3,7 @@ import type { GetPointerResult, PointerType, UpdatePointersMessage, + User, } from "@smartpointer-desktop/shared"; import { ipcRenderer } from "electron"; @@ -61,6 +62,12 @@ export const removeCustomPointerType = ( ipcRenderer.send("removeCustomPointerType", customPointerType); }; -export const getUsers = async (): Promise => { - // TODO: ユーザー一覧を取得用 IPC通信の実装 +export const requestUsers = () => { + ipcRenderer.send("requestUsers"); +}; + +export const onUpdateUsers = (callback: (users: User[]) => void) => { + ipcRenderer.on("onUpdateUsers", (_, users: User[]) => { + callback(users); + }); }; diff --git a/desktop/packages/renderer/src/userList/App.tsx b/desktop/packages/renderer/src/userList/App.tsx index 64c104d4..08257689 100644 --- a/desktop/packages/renderer/src/userList/App.tsx +++ b/desktop/packages/renderer/src/userList/App.tsx @@ -4,6 +4,8 @@ import { FC, useEffect, useState } from "react"; import { useUserColor } from "@/util/useUserColor"; +import { onUpdateUsers, requestUsers } from "#preload"; + export const App: FC = () => { const [users, setUsers] = useState([]); @@ -12,13 +14,11 @@ export const App: FC = () => { }, [users.length]); useEffect(() => { - // TODO: query users from main process - setUsers([]); + requestUsers(); }, []); useEffect(() => { - // TODO: subscribe users from main process - setUsers([]); + onUpdateUsers(setUsers); }, []); const getUserColor = useUserColor(); From 920ca491efd78987d794966826769c421e91e7d1 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sun, 13 Nov 2022 01:23:23 +0900 Subject: [PATCH 171/189] add: gql code gen --- app/src/main/pointer/src/gql/graphql.ts | 10 ++++++++++ desktop/packages/main/src/gql/gql.ts | 2 ++ desktop/packages/main/src/gql/graphql.ts | 10 +++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index ae99f9ea..f88a0f5c 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -49,6 +49,8 @@ export type Mutation = { __typename?: 'Mutation'; /** ポインタータイプ変更API */ changePointerType: Scalars['String']; + /** カスタムポインター作成API */ + createCustomPointer: Scalars['ID']; /** ルーム作成API */ createRoom: Room; /** カスタムポインター削除API */ @@ -82,6 +84,14 @@ export type MutationChangePointerTypeArgs = { }; +export type MutationCreateCustomPointerArgs = { + content: Scalars['String']; + id: Scalars['ID']; + label: Scalars['String']; + roomId: Scalars['ID']; +}; + + export type MutationCreateRoomArgs = { pointerType: Scalars['String']; }; diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts index aaa8f35c..f07d3460 100644 --- a/desktop/packages/main/src/gql/gql.ts +++ b/desktop/packages/main/src/gql/gql.ts @@ -10,6 +10,7 @@ const documents = { "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n ": types.SubscribeToPointerTypeDocument, "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n ": types.DeleteRoomDocument, "\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n ": types.ChangePointerTypeDocument, + "\n query GetUsers($roomId: ID!) {\n getUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n ": types.GetUsersDocument, }; export function graphql(source: "\n mutation CreateRoom {\n createRoom(pointerType: \"SPOTLIGHT\") {\n id\n passcode\n }\n }\n "): (typeof documents)["\n mutation CreateRoom {\n createRoom(pointerType: \"SPOTLIGHT\") {\n id\n passcode\n }\n }\n "]; @@ -19,6 +20,7 @@ export function graphql(source: "\n subscription SubscribeToPointerDisc export function graphql(source: "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "]; export function graphql(source: "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "): (typeof documents)["\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "]; export function graphql(source: "\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n "): (typeof documents)["\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n "]; +export function graphql(source: "\n query GetUsers($roomId: ID!) {\n getUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n query GetUsers($roomId: ID!) {\n getUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "]; export function graphql(source: string): unknown; export function graphql(source: string) { diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index dc5fe4cd..17230d2e 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -371,6 +371,13 @@ export type ChangePointerTypeMutationVariables = Exact<{ export type ChangePointerTypeMutation = { __typename?: 'Mutation', changePointerType: string }; +export type GetUsersQueryVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type GetUsersQuery = { __typename?: 'Query', getUsers: { __typename?: 'Users', users: Array<{ __typename?: 'User', id: string, name: string }> } }; + export const CreateRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRoom"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"StringValue","value":"SPOTLIGHT","block":false}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"passcode"}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToSlideControlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToSlideControl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToSlideControl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; @@ -378,4 +385,5 @@ export const SubscribeToPointerDocument = {"kind":"Document","definitions":[{"ki export const SubscribeToPointerDisconnectEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerDisconnectEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerDisconnectEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToPointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const DeleteRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; -export const ChangePointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ChangePointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"changePointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}}},{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; \ No newline at end of file +export const ChangePointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ChangePointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"changePointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}}},{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const GetUsersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetUsers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file From d69cdcf0d8dcb52241635e87cd7b572447044301 Mon Sep 17 00:00:00 2001 From: Hoshi Ran Date: Sun, 13 Nov 2022 02:48:27 +0900 Subject: [PATCH 172/189] =?UTF-8?q?feat:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E4=B8=80=E8=A6=A7=E3=82=92=20subscribe=20#327?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/pointer/src/gql/graphql.ts | 7 ++++ desktop/packages/main/src/controller/index.ts | 34 +++++++++++++++++++ desktop/packages/main/src/gql/gql.ts | 2 ++ desktop/packages/main/src/gql/graphql.ts | 15 ++++++++ 4 files changed, 58 insertions(+) diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index 47c9dbdd..732ec1c0 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -241,6 +241,8 @@ export type Subscription = { subscribeToPointerDisconnectEvent: User; /** ポインタータイプ購読API */ subscribeToPointerType: Scalars['String']; + /** ルーム終了イベント購読API */ + subscribeToRoomFinishEvent: Scalars['ID']; /** スライド操作購読API */ subscribeToSlideControl: SlideControl; /** タイマー購読API */ @@ -270,6 +272,11 @@ export type SubscriptionSubscribeToPointerTypeArgs = { }; +export type SubscriptionSubscribeToRoomFinishEventArgs = { + roomId: Scalars['ID']; +}; + + export type SubscriptionSubscribeToSlideControlArgs = { roomId: Scalars['ID']; }; diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index ac6e056f..3d815996 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -198,6 +198,36 @@ export const controller = { } ); + requestWs( + { + query: graphql(/* GraphQL */ ` + subscription SubscribeToUsers($roomId: ID!) { + subscribeToUsers(roomId: $roomId) { + users { + id + name + } + } + } + `), + variables: { + roomId: data.createRoom.id, + }, + }, + { + next(value) { + const data = value.data?.subscribeToUsers; + if (data) { + controller.updateUserList(data.users); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + error() {}, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete() {}, + } + ); + view.tray.update(); await view.window.pointerOverlay.show(); await view.window.inviteLink.show(); @@ -361,4 +391,8 @@ export const controller = { } ); }, + + updateUserList: (users: User[]) => { + view.window.userList.updateUsers(users); + }, }; diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts index f07d3460..93b94652 100644 --- a/desktop/packages/main/src/gql/gql.ts +++ b/desktop/packages/main/src/gql/gql.ts @@ -8,6 +8,7 @@ const documents = { "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n ": types.SubscribeToPointerDocument, "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n ": types.SubscribeToPointerDisconnectEventDocument, "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n ": types.SubscribeToPointerTypeDocument, + "\n subscription SubscribeToUsers($roomId: ID!) {\n subscribeToUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n ": types.SubscribeToUsersDocument, "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n ": types.DeleteRoomDocument, "\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n ": types.ChangePointerTypeDocument, "\n query GetUsers($roomId: ID!) {\n getUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n ": types.GetUsersDocument, @@ -18,6 +19,7 @@ export function graphql(source: "\n subscription SubscribeToSlideContro export function graphql(source: "\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointer($roomId: ID!) {\n subscribeToPointer(roomId: $roomId) {\n orientation {\n alpha\n beta\n gamma\n }\n user {\n id\n name\n }\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "]; +export function graphql(source: "\n subscription SubscribeToUsers($roomId: ID!) {\n subscribeToUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n subscription SubscribeToUsers($roomId: ID!) {\n subscribeToUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "]; export function graphql(source: "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "): (typeof documents)["\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "]; export function graphql(source: "\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n "): (typeof documents)["\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n "]; export function graphql(source: "\n query GetUsers($roomId: ID!) {\n getUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n query GetUsers($roomId: ID!) {\n getUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "]; diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index 17230d2e..aaf93385 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -241,6 +241,8 @@ export type Subscription = { subscribeToPointerDisconnectEvent: User; /** ポインタータイプ購読API */ subscribeToPointerType: Scalars['String']; + /** ルーム終了イベント購読API */ + subscribeToRoomFinishEvent: Scalars['ID']; /** スライド操作購読API */ subscribeToSlideControl: SlideControl; /** タイマー購読API */ @@ -270,6 +272,11 @@ export type SubscriptionSubscribeToPointerTypeArgs = { }; +export type SubscriptionSubscribeToRoomFinishEventArgs = { + roomId: Scalars['ID']; +}; + + export type SubscriptionSubscribeToSlideControlArgs = { roomId: Scalars['ID']; }; @@ -356,6 +363,13 @@ export type SubscribeToPointerTypeSubscriptionVariables = Exact<{ export type SubscribeToPointerTypeSubscription = { __typename?: 'Subscription', subscribeToPointerType: string }; +export type SubscribeToUsersSubscriptionVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type SubscribeToUsersSubscription = { __typename?: 'Subscription', subscribeToUsers: { __typename?: 'Users', users: Array<{ __typename?: 'User', id: string, name: string }> } }; + export type DeleteRoomMutationVariables = Exact<{ roomId: Scalars['ID']; }>; @@ -384,6 +398,7 @@ export const SubscribeToSlideControlDocument = {"kind":"Document","definitions": export const SubscribeToPointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orientation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"alpha"}},{"kind":"Field","name":{"kind":"Name","value":"beta"}},{"kind":"Field","name":{"kind":"Name","value":"gamma"}}]}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToPointerDisconnectEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerDisconnectEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerDisconnectEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToPointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const SubscribeToUsersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToUsers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; export const DeleteRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const ChangePointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ChangePointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"changePointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}}},{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const GetUsersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetUsers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file From 3429fd16150cca94161666ac6403946298c1ea75 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 13 Nov 2022 04:54:35 +0900 Subject: [PATCH 173/189] mutate and subscribe custom pointer from desktop --- desktop/packages/main/src/controller/index.ts | 116 +++++-- desktop/packages/main/src/gql/gql.ts | 8 + desktop/packages/main/src/gql/graphql.ts | 39 +++ desktop/packages/main/src/model/index.ts | 11 +- desktop/packages/main/src/view/tray.ts | 4 +- .../main/src/view/window/customPointerType.ts | 16 +- desktop/packages/preload/src/index.ts | 17 +- .../renderer/src/customPointerTypes/App.tsx | 301 ++++++++++++------ .../CustomPointerTypeTabItem.tsx | 144 --------- .../src/customPointerTypes/useAutosave.tsx | 51 --- .../src/customPointerTypes/useDebounce.ts | 16 - .../renderer/src/overlay/CustomPointer.tsx | 3 +- desktop/packages/shared/index.ts | 12 +- 13 files changed, 371 insertions(+), 367 deletions(-) delete mode 100644 desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx delete mode 100644 desktop/packages/renderer/src/customPointerTypes/useAutosave.tsx delete mode 100644 desktop/packages/renderer/src/customPointerTypes/useDebounce.ts diff --git a/desktop/packages/main/src/controller/index.ts b/desktop/packages/main/src/controller/index.ts index 3d815996..7330f9f1 100644 --- a/desktop/packages/main/src/controller/index.ts +++ b/desktop/packages/main/src/controller/index.ts @@ -228,6 +228,37 @@ export const controller = { } ); + await Promise.all( + model.state.customPointerTypes.map(async (customPointerType) => { + requestHttp({ + query: graphql(/* GraphQL */ ` + mutation CreateCustomPointers( + $roomId: ID! + $id: ID! + $label: String! + $content: String! + ) { + createCustomPointer( + roomId: $roomId + id: $id + label: $label + content: $content + ) + } + `), + variables: { + roomId: data.createRoom.id, + id: customPointerType.id, + label: customPointerType.label, + content: customPointerType.content.replace( + /^data:.+;base64,\s*/, + "" + ), + }, + }); + }) + ); + view.tray.update(); await view.window.pointerOverlay.show(); await view.window.inviteLink.show(); @@ -238,6 +269,8 @@ export const controller = { throw new Error("Cannot close room when not in created state"); } + store.set("customPointerTypes", model.state.customPointerTypes); + await requestHttp({ query: graphql(/* GraphQL */ ` mutation DeleteRoom($roomId: ID!) { @@ -277,29 +310,86 @@ export const controller = { view.window.pointerOverlay.toggleDevTools(); }, - addCustomPointerType: () => { - const customPointerType: CustomPointerType = { - id: randomUUID(), - name: "新規カスタムポインター", - }; + addCustomPointerType: (label: string, content: string) => { + const id = randomUUID(); - model.addedCustomPointerType(customPointerType); + model.addedCustomPointerType({ id, label, content }); view.tray.update(); store.set("customPointerTypes", model.state.customPointerTypes); view.window.customPointerType.updateCustomPointerType(); + + if (model.state.status !== "CREATED") { + return; + } + + requestHttp({ + query: graphql(/* GraphQL */ ` + mutation CreateCustomPointer( + $roomId: ID! + $id: ID! + $label: String! + $content: String! + ) { + createCustomPointer( + roomId: $roomId + id: $id + label: $label + content: $content + ) + } + `), + variables: { + roomId: model.state.room.id, + id, + label, + content: content.replace(/^data:.+;base64,\s*/, ""), + }, + }); }, - removeCustomPointerType: (customPointerType: CustomPointerType) => { - model.removedCustomPointerType(customPointerType); + removeCustomPointerType: (customPointerTypeId: CustomPointerType["id"]) => { + if ( + model.state.status === "CREATED" && + model.state.selectedPointerTypeId === customPointerTypeId + ) { + model.selectedPointer("SPOTLIGHT"); + requestHttp({ + query: graphql(/* GraphQL */ ` + mutation ChangePointerTypeToSpotlight($roomId: ID!) { + changePointerType(pointerType: "SPOTLIGHT", roomId: $roomId) + } + `), + variables: { + roomId: model.state.room.id, + }, + }); + } + model.removedCustomPointerType(customPointerTypeId); view.tray.update(); store.set("customPointerTypes", model.state.customPointerTypes); view.window.customPointerType.updateCustomPointerType(); + + if (model.state.status !== "CREATED") { + return; + } + + requestHttp({ + query: graphql(/* GraphQL */ ` + mutation DeleteCustomPointer($roomId: ID!, $id: ID!) { + deleteCustomPointer(id: $id, roomId: $roomId) + } + `), + variables: { + roomId: model.state.room.id, + id: customPointerTypeId, + }, + }); }, requestChangePointerType: (pointerTypeId: PointerType["id"]) => { @@ -330,16 +420,6 @@ export const controller = { ); }, - updateCustomPointerType: (customPointerType: CustomPointerType) => { - model.updatedCustomPointerType(customPointerType); - - view.tray.update(); - - store.set("customPointerTypes", model.state.customPointerTypes); - - view.window.customPointerType.updateCustomPointerType(); - }, - showCustomPointerTypes: () => { view.window.customPointerType.show(); }, diff --git a/desktop/packages/main/src/gql/gql.ts b/desktop/packages/main/src/gql/gql.ts index 93b94652..608b6f49 100644 --- a/desktop/packages/main/src/gql/gql.ts +++ b/desktop/packages/main/src/gql/gql.ts @@ -9,7 +9,11 @@ const documents = { "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n ": types.SubscribeToPointerDisconnectEventDocument, "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n ": types.SubscribeToPointerTypeDocument, "\n subscription SubscribeToUsers($roomId: ID!) {\n subscribeToUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n ": types.SubscribeToUsersDocument, + "\n mutation CreateCustomPointers(\n $roomId: ID!\n $id: ID!\n $label: String!\n $content: String!\n ) {\n createCustomPointer(\n roomId: $roomId\n id: $id\n label: $label\n content: $content\n )\n }\n ": types.CreateCustomPointersDocument, "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n ": types.DeleteRoomDocument, + "\n mutation CreateCustomPointer(\n $roomId: ID!\n $id: ID!\n $label: String!\n $content: String!\n ) {\n createCustomPointer(\n roomId: $roomId\n id: $id\n label: $label\n content: $content\n )\n }\n ": types.CreateCustomPointerDocument, + "\n mutation ChangePointerTypeToSpotlight($roomId: ID!) {\n changePointerType(pointerType: \"SPOTLIGHT\", roomId: $roomId)\n }\n ": types.ChangePointerTypeToSpotlightDocument, + "\n mutation DeleteCustomPointer($roomId: ID!, $id: ID!) {\n deleteCustomPointer(id: $id, roomId: $roomId)\n }\n ": types.DeleteCustomPointerDocument, "\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n ": types.ChangePointerTypeDocument, "\n query GetUsers($roomId: ID!) {\n getUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n ": types.GetUsersDocument, }; @@ -20,7 +24,11 @@ export function graphql(source: "\n subscription SubscribeToPointer($ro export function graphql(source: "\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "): (typeof documents)["\n subscription SubscribeToPointerDisconnectEvent($roomId: ID!) {\n subscribeToPointerDisconnectEvent(roomId: $roomId) {\n id\n }\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "]; export function graphql(source: "\n subscription SubscribeToUsers($roomId: ID!) {\n subscribeToUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n subscription SubscribeToUsers($roomId: ID!) {\n subscribeToUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "]; +export function graphql(source: "\n mutation CreateCustomPointers(\n $roomId: ID!\n $id: ID!\n $label: String!\n $content: String!\n ) {\n createCustomPointer(\n roomId: $roomId\n id: $id\n label: $label\n content: $content\n )\n }\n "): (typeof documents)["\n mutation CreateCustomPointers(\n $roomId: ID!\n $id: ID!\n $label: String!\n $content: String!\n ) {\n createCustomPointer(\n roomId: $roomId\n id: $id\n label: $label\n content: $content\n )\n }\n "]; export function graphql(source: "\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "): (typeof documents)["\n mutation DeleteRoom($roomId: ID!) {\n deleteRoom(roomId: $roomId)\n }\n "]; +export function graphql(source: "\n mutation CreateCustomPointer(\n $roomId: ID!\n $id: ID!\n $label: String!\n $content: String!\n ) {\n createCustomPointer(\n roomId: $roomId\n id: $id\n label: $label\n content: $content\n )\n }\n "): (typeof documents)["\n mutation CreateCustomPointer(\n $roomId: ID!\n $id: ID!\n $label: String!\n $content: String!\n ) {\n createCustomPointer(\n roomId: $roomId\n id: $id\n label: $label\n content: $content\n )\n }\n "]; +export function graphql(source: "\n mutation ChangePointerTypeToSpotlight($roomId: ID!) {\n changePointerType(pointerType: \"SPOTLIGHT\", roomId: $roomId)\n }\n "): (typeof documents)["\n mutation ChangePointerTypeToSpotlight($roomId: ID!) {\n changePointerType(pointerType: \"SPOTLIGHT\", roomId: $roomId)\n }\n "]; +export function graphql(source: "\n mutation DeleteCustomPointer($roomId: ID!, $id: ID!) {\n deleteCustomPointer(id: $id, roomId: $roomId)\n }\n "): (typeof documents)["\n mutation DeleteCustomPointer($roomId: ID!, $id: ID!) {\n deleteCustomPointer(id: $id, roomId: $roomId)\n }\n "]; export function graphql(source: "\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n "): (typeof documents)["\n mutation ChangePointerType($pointerType: String!, $roomId: ID!) {\n changePointerType(pointerType: $pointerType, roomId: $roomId)\n }\n "]; export function graphql(source: "\n query GetUsers($roomId: ID!) {\n getUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "): (typeof documents)["\n query GetUsers($roomId: ID!) {\n getUsers(roomId: $roomId) {\n users {\n id\n name\n }\n }\n }\n "]; diff --git a/desktop/packages/main/src/gql/graphql.ts b/desktop/packages/main/src/gql/graphql.ts index aaf93385..24fa1776 100644 --- a/desktop/packages/main/src/gql/graphql.ts +++ b/desktop/packages/main/src/gql/graphql.ts @@ -370,6 +370,16 @@ export type SubscribeToUsersSubscriptionVariables = Exact<{ export type SubscribeToUsersSubscription = { __typename?: 'Subscription', subscribeToUsers: { __typename?: 'Users', users: Array<{ __typename?: 'User', id: string, name: string }> } }; +export type CreateCustomPointersMutationVariables = Exact<{ + roomId: Scalars['ID']; + id: Scalars['ID']; + label: Scalars['String']; + content: Scalars['String']; +}>; + + +export type CreateCustomPointersMutation = { __typename?: 'Mutation', createCustomPointer: string }; + export type DeleteRoomMutationVariables = Exact<{ roomId: Scalars['ID']; }>; @@ -377,6 +387,31 @@ export type DeleteRoomMutationVariables = Exact<{ export type DeleteRoomMutation = { __typename?: 'Mutation', deleteRoom: string }; +export type CreateCustomPointerMutationVariables = Exact<{ + roomId: Scalars['ID']; + id: Scalars['ID']; + label: Scalars['String']; + content: Scalars['String']; +}>; + + +export type CreateCustomPointerMutation = { __typename?: 'Mutation', createCustomPointer: string }; + +export type ChangePointerTypeToSpotlightMutationVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type ChangePointerTypeToSpotlightMutation = { __typename?: 'Mutation', changePointerType: string }; + +export type DeleteCustomPointerMutationVariables = Exact<{ + roomId: Scalars['ID']; + id: Scalars['ID']; +}>; + + +export type DeleteCustomPointerMutation = { __typename?: 'Mutation', deleteCustomPointer: string }; + export type ChangePointerTypeMutationVariables = Exact<{ pointerType: Scalars['String']; roomId: Scalars['ID']; @@ -399,6 +434,10 @@ export const SubscribeToPointerDocument = {"kind":"Document","definitions":[{"ki export const SubscribeToPointerDisconnectEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerDisconnectEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerDisconnectEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; export const SubscribeToPointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const SubscribeToUsersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToUsers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; +export const CreateCustomPointersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateCustomPointers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"label"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"content"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createCustomPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"label"},"value":{"kind":"Variable","name":{"kind":"Name","value":"label"}}},{"kind":"Argument","name":{"kind":"Name","value":"content"},"value":{"kind":"Variable","name":{"kind":"Name","value":"content"}}}]}]}}]} as unknown as DocumentNode; export const DeleteRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const CreateCustomPointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateCustomPointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"label"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"content"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createCustomPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"label"},"value":{"kind":"Variable","name":{"kind":"Name","value":"label"}}},{"kind":"Argument","name":{"kind":"Name","value":"content"},"value":{"kind":"Variable","name":{"kind":"Name","value":"content"}}}]}]}}]} as unknown as DocumentNode; +export const ChangePointerTypeToSpotlightDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ChangePointerTypeToSpotlight"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"changePointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"StringValue","value":"SPOTLIGHT","block":false}},{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const DeleteCustomPointerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteCustomPointer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteCustomPointer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const ChangePointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ChangePointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"changePointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}}},{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const GetUsersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetUsers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/desktop/packages/main/src/model/index.ts b/desktop/packages/main/src/model/index.ts index c81a8e14..6480fab1 100644 --- a/desktop/packages/main/src/model/index.ts +++ b/desktop/packages/main/src/model/index.ts @@ -103,13 +103,6 @@ export const model = { }; }, - updatedCustomPointerTypes: (customPointerTypes: CustomPointerType[]) => { - state = { - ...state, - customPointerTypes, - }; - }, - addedCustomPointerType: (customPointerType: CustomPointerType) => { state = { ...state, @@ -117,11 +110,11 @@ export const model = { }; }, - removedCustomPointerType: (customPointerType: CustomPointerType) => { + removedCustomPointerType: (customPointerTypeId: CustomPointerType["id"]) => { state = { ...state, customPointerTypes: state.customPointerTypes.filter( - (type) => type.id !== customPointerType.id + (type) => type.id !== customPointerTypeId ), }; }, diff --git a/desktop/packages/main/src/view/tray.ts b/desktop/packages/main/src/view/tray.ts index 6392fd93..310d054c 100644 --- a/desktop/packages/main/src/view/tray.ts +++ b/desktop/packages/main/src/view/tray.ts @@ -39,11 +39,11 @@ const pointerListTemplate: MenuTemplateWithState< submenu: builtInPointers .concat( state.customPointerTypes.filter( - (pointerType) => pointerType.image !== undefined + (pointerType) => pointerType.content !== undefined ) ) .map((pointer) => ({ - label: pointer.name, + label: pointer.label, type: "radio", checked: state.selectedPointerTypeId === pointer.id, click: () => controller.requestChangePointerType(pointer.id), diff --git a/desktop/packages/main/src/view/window/customPointerType.ts b/desktop/packages/main/src/view/window/customPointerType.ts index 3a02d85b..1f559b70 100644 --- a/desktop/packages/main/src/view/window/customPointerType.ts +++ b/desktop/packages/main/src/view/window/customPointerType.ts @@ -30,6 +30,8 @@ export const customPointerType = { }, }); + customPointerTypesWindow.webContents.openDevTools(); + await loadFile(customPointerTypesWindow, "customPointerTypes.html"); } @@ -55,19 +57,15 @@ ipcMain.handle("getCustomPointerTypes", () => { }); ipcMain.on( - "updateCustomPointerType", - (_, customPointerType: CustomPointerType) => { - controller.updateCustomPointerType(customPointerType); + "addCustomPointerType", + (_, { label, content }: { label: string; content: string }) => { + controller.addCustomPointerType(label, content); } ); -ipcMain.on("addCustomPointerType", () => { - controller.addCustomPointerType(); -}); - ipcMain.on( "removeCustomPointerType", - (_, customPointerType: CustomPointerType) => { - controller.removeCustomPointerType(customPointerType); + (_, customPointerTypeId: CustomPointerType["id"]) => { + controller.removeCustomPointerType(customPointerTypeId); } ); diff --git a/desktop/packages/preload/src/index.ts b/desktop/packages/preload/src/index.ts index dbb785b9..ebe391ff 100644 --- a/desktop/packages/preload/src/index.ts +++ b/desktop/packages/preload/src/index.ts @@ -46,20 +46,17 @@ export const getCustomPointerTypes = async (): Promise => { return customPointerTypes; }; -export const updateCustomPointerType = ( - customPointerType: CustomPointerType -) => { - ipcRenderer.send("updateCustomPointerType", customPointerType); -}; - -export const addCustomPointerType = () => { - ipcRenderer.send("addCustomPointerType"); +export const addCustomPointerType = (label: string, content: string) => { + ipcRenderer.send("addCustomPointerType", { + label, + content, + }); }; export const removeCustomPointerType = ( - customPointerType: CustomPointerType + customPointerTypeId: CustomPointerType["id"] ) => { - ipcRenderer.send("removeCustomPointerType", customPointerType); + ipcRenderer.send("removeCustomPointerType", customPointerTypeId); }; export const requestUsers = () => { diff --git a/desktop/packages/renderer/src/customPointerTypes/App.tsx b/desktop/packages/renderer/src/customPointerTypes/App.tsx index f1d0e424..1b70aa4e 100644 --- a/desktop/packages/renderer/src/customPointerTypes/App.tsx +++ b/desktop/packages/renderer/src/customPointerTypes/App.tsx @@ -1,43 +1,148 @@ import { + Box, Button, + Center, Flex, + FormControl, + FormHelperText, + FormLabel, Heading, HStack, Icon, Image, + Input, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalFooter, + ModalHeader, + ModalOverlay, Spacer, - Tab, - TabList, - TabPanel, - TabPanels, - Tabs, + StackDivider, Text, + useDisclosure, VStack, } from "@chakra-ui/react"; -import { NoSymbolIcon, PlusIcon } from "@heroicons/react/24/outline"; +import { NoSymbolIcon, PlusIcon, TrashIcon } from "@heroicons/react/24/outline"; import type { CustomPointerType } from "@smartpointer-desktop/shared"; -import { FC, useEffect, useState } from "react"; - -import { CustomPointerTypeTabItem } from "./CustomPointerTypeTabItem"; +import { FC, useEffect, useMemo, useState } from "react"; +import { useDropzone } from "react-dropzone"; import { addCustomPointerType, getCustomPointerTypes, onUpdateCustomPointerTypes, + removeCustomPointerType, } from "#preload"; +const SelectPicture: FC<{ + value: File | undefined; + onChange: (acceptedFiles: File[]) => void; +}> = ({ value, onChange }) => { + const { getRootProps, getInputProps } = useDropzone({ + accept: { + "image/jpeg": [], + "image/png": [], + "image/gif": [], + }, + maxFiles: 1, + maxSize: 5 * 1024 * 1024, // 5MB + onDrop: onChange, + }); + + const url = useMemo(() => value && URL.createObjectURL(value), [value]); + + return ( + +
+ {url ? ( + + ) : ( +
+ + + + + + no image + +
+ )} + + + クリックして画像を選択するか、ここにドラッグ&ドロップしてください + +
+
+ ); +}; + export const App: FC = () => { const [customPointerTypes, setCustomPointerTypes] = useState< CustomPointerType[] >([]); + const { isOpen, onOpen, onClose } = useDisclosure(); + useEffect(() => { getCustomPointerTypes().then(setCustomPointerTypes); onUpdateCustomPointerTypes(setCustomPointerTypes); }, []); + const [newCustomPointerTypeLabel, setNewCustomPointerTypeLabel] = + useState(""); + const [newCustomPointerTypeImage, setNewCustomPointerTypeImage] = useState< + File | undefined + >(); + + const onCreate = () => { + if (newCustomPointerTypeLabel && newCustomPointerTypeImage) { + const reader = new FileReader(); + reader.onload = () => { + const result = reader.result; + if (result) { + addCustomPointerType(newCustomPointerTypeLabel, result.toString()); + setNewCustomPointerTypeLabel(""); + setNewCustomPointerTypeImage(undefined); + } + }; + reader.readAsDataURL(newCustomPointerTypeImage); + + onClose(); + } + }; + + const onCancel = () => { + setNewCustomPointerTypeLabel(""); + setNewCustomPointerTypeImage(undefined); + onClose(); + }; return ( - + { - } + sx={{ + "&::-webkit-scrollbar": { + width: "0.5rem", + backgroundColor: "gray.200", + }, + "&::-webkit-scrollbar-thumb": { + backgroundColor: "gray.500", + borderRadius: "0.25rem", + }, + }} > - - {customPointerTypes.map(({ id, name, image }) => ( - + カスタムポインターがありません + 「追加する」ボタンから追加してください + + )} + {customPointerTypes.map(({ id, label, content: url }) => ( + + + + {label} + + + + ))} + + + + + 新規カスタムポインター作成 + + + + カスタムポインター名 + + setNewCustomPointerTypeLabel(event.currentTarget.value) + } + name="name" + /> + + + 画像 + + setNewCustomPointerTypeImage(acceptedFiles[0]) + } + /> + + + + + + + + + + +
); }; diff --git a/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx b/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx deleted file mode 100644 index 7ce93da2..00000000 --- a/desktop/packages/renderer/src/customPointerTypes/CustomPointerTypeTabItem.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import { - Box, - Button, - Center, - FormControl, - FormHelperText, - FormLabel, - Icon, - Image, - Input, - Text, - VStack, -} from "@chakra-ui/react"; -import { NoSymbolIcon, TrashIcon } from "@heroicons/react/24/outline"; -import type { CustomPointerType } from "@smartpointer-desktop/shared"; -import { FC, FormEvent, useState } from "react"; -import { useDropzone } from "react-dropzone"; - -import { useAutosave } from "./useAutosave"; - -import { removeCustomPointerType, updateCustomPointerType } from "#preload"; - -export const CustomPointerTypeTabItem: FC<{ - customPointerType: CustomPointerType; -}> = ({ customPointerType }) => { - const [values, setValues] = useState(customPointerType); - - const onChanges = (e: FormEvent) => { - const { name, value } = e.currentTarget; - setValues((prev) => ({ - ...prev, - [name]: value, - })); - }; - - useAutosave({ - data: values, - onSave: (data) => { - if (data !== customPointerType) { - updateCustomPointerType(data); - } - }, - }); - - const { getRootProps, getInputProps } = useDropzone({ - accept: { - "image/jpeg": [], - "image/png": [], - "image/gif": [], - }, - maxFiles: 1, - maxSize: 5 * 1024 * 1024, // 5MB - onDrop: (acceptedFiles) => { - const file = acceptedFiles[0]; - if (file) { - const reader = new FileReader(); - reader.onload = () => { - const result = reader.result; - if (result) { - console.log(result); - setValues((prev) => ({ ...prev, image: result.toString() })); - } - }; - reader.readAsDataURL(file); - } - }, - }); - - return ( - - - カスタムポインター名 - - - - 画像 - -
- {values.image ? ( - - ) : ( -
- - - - - - no image - -
- )} - - - クリックして画像を選択するか、ここにドラッグ&ドロップしてください - -
-
-
- - - -
- ); -}; diff --git a/desktop/packages/renderer/src/customPointerTypes/useAutosave.tsx b/desktop/packages/renderer/src/customPointerTypes/useAutosave.tsx deleted file mode 100644 index e55c55f9..00000000 --- a/desktop/packages/renderer/src/customPointerTypes/useAutosave.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { useEffect, useRef } from "react"; - -import { useDebounce } from "./useDebounce"; - -export function useAutosave({ - data, - onSave, - interval = 2000, - saveOnUnmount = true, -}: { - /** The controlled form value to be auto saved */ - data: TData; - /** Callback function to save your data */ - onSave: (data: TData) => Promise | TReturn | void; - /** The number of milliseconds between save attempts. Defaults to 2000 */ - interval?: number; - /** Set to false if you do not want the save function to fire on unmount */ - saveOnUnmount?: boolean; -}) { - const valueOnCleanup = useRef(data); - const initialRender = useRef(true); - const handleSave = useRef(onSave); - - const debouncedValueToSave = useDebounce(data, interval); - - useEffect(() => { - if (initialRender.current) { - initialRender.current = false; - } else { - handleSave.current(debouncedValueToSave); - } - }, [debouncedValueToSave]); - - useEffect(() => { - valueOnCleanup.current = data; - }, [data]); - - useEffect(() => { - handleSave.current = onSave; - }, [onSave]); - - useEffect( - () => () => { - if (saveOnUnmount && data !== valueOnCleanup.current) { - console.log("cleanup"); - handleSave.current(valueOnCleanup.current); - } - }, - [data, saveOnUnmount] - ); -} diff --git a/desktop/packages/renderer/src/customPointerTypes/useDebounce.ts b/desktop/packages/renderer/src/customPointerTypes/useDebounce.ts deleted file mode 100644 index 68b1941e..00000000 --- a/desktop/packages/renderer/src/customPointerTypes/useDebounce.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { useEffect, useState } from "react"; - -export function useDebounce(data: TData, interval: number) { - const [liveData, setLiveData] = useState(data); - - useEffect(() => { - const handler = setTimeout(() => { - setLiveData(data); - }, interval); - return () => { - clearTimeout(handler); - }; - }, [data, interval]); - - return liveData; -} diff --git a/desktop/packages/renderer/src/overlay/CustomPointer.tsx b/desktop/packages/renderer/src/overlay/CustomPointer.tsx index ccf05b2b..bb2f9546 100644 --- a/desktop/packages/renderer/src/overlay/CustomPointer.tsx +++ b/desktop/packages/renderer/src/overlay/CustomPointer.tsx @@ -15,9 +15,10 @@ export const CustomPointer: FC<{ pointers={pointers} renderPointer={() => ( )} /> diff --git a/desktop/packages/shared/index.ts b/desktop/packages/shared/index.ts index 41e9d418..a1db405a 100644 --- a/desktop/packages/shared/index.ts +++ b/desktop/packages/shared/index.ts @@ -28,13 +28,13 @@ export type BuiltInPointerId = "SPOTLIGHT" | "ARROW" | "FINGER"; export type BuiltInPointerType = { id: BuiltInPointerId; - name: string; + label: string; }; export type CustomPointerType = { id: string; - name: string; - image?: string; + label: string; + content: string; }; export type PointerType = BuiltInPointerType | CustomPointerType; @@ -42,14 +42,14 @@ export type PointerType = BuiltInPointerType | CustomPointerType; export const builtInPointers: PointerType[] = [ { id: "SPOTLIGHT", - name: "スポットライト", + label: "スポットライト", }, { id: "ARROW", - name: "矢印", + label: "矢印", }, { id: "FINGER", - name: "人差し指", + label: "人差し指", }, ]; From 7638733945ff007316657a5b3e05a079f27d010f Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 13 Nov 2022 04:59:49 +0900 Subject: [PATCH 174/189] mutate and subscribe custom pointer from pointer --- .../main/pointer/src/components/Pointer.tsx | 244 +++++++++++++----- app/src/main/pointer/src/gql/gql.ts | 8 +- app/src/main/pointer/src/gql/graphql.ts | 16 ++ 3 files changed, 196 insertions(+), 72 deletions(-) diff --git a/app/src/main/pointer/src/components/Pointer.tsx b/app/src/main/pointer/src/components/Pointer.tsx index 2e5beab0..f14e3efe 100644 --- a/app/src/main/pointer/src/components/Pointer.tsx +++ b/app/src/main/pointer/src/components/Pointer.tsx @@ -134,6 +134,10 @@ export const Pointer: FC = ({ authData }) => { null ); + const [customPointers, setCustomPointers] = useState< + CustomPointerType[] | null + >(null); + const colors = useToken("colors", [ "gray.500", "red.500", @@ -248,11 +252,107 @@ export const Pointer: FC = ({ authData }) => { ); }, [authData.roomId, toast]); + useEffect(() => { + requestWs( + { + query: graphql(/* GraphQL */ ` + query GetCustomPointers($roomId: ID!) { + getCustomPointers(roomId: $roomId) { + customPointers { + id + label + url + } + } + } + `), + variables: { + roomId: authData.roomId, + }, + }, + { + next: ({ data, errors }) => { + if (data) { + setCustomPointers(data.getCustomPointers.customPointers); + } + if (errors) { + for (const error of errors) { + toast({ + title: "エラーが発生しました", + description: error.message, + status: "error", + }); + } + } + }, + error: (err) => { + if (err instanceof Error) { + toast({ + title: "エラーが発生しました", + description: err.message, + status: "error", + }); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete: () => {}, + } + ); + }, [authData.roomId, toast]); + + useEffect(() => { + requestWs( + { + query: graphql(/* GraphQL */ ` + subscription SubscribeToCustomPointers($roomId: ID!) { + subscribeToCustomPointers(roomId: $roomId) { + customPointers { + id + label + url + } + } + } + `), + variables: { + roomId: authData.roomId, + }, + }, + { + next: ({ data, errors }) => { + if (data) { + setCustomPointers(data.subscribeToCustomPointers.customPointers); + } + if (errors) { + for (const error of errors) { + toast({ + title: "エラーが発生しました", + description: error.message, + status: "error", + }); + } + } + }, + error: (err) => { + if (err instanceof Error) { + toast({ + title: "エラーが発生しました", + description: err.message, + status: "error", + }); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete: () => {}, + } + ); + }, [authData.roomId, toast]); + return ( - ))} - - - - + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete: () => {}, + } + ); + }} + > + + + {pointer.label} + + + ))} + + + + + )} ); }; diff --git a/app/src/main/pointer/src/gql/gql.ts b/app/src/main/pointer/src/gql/gql.ts index d6fd285b..be3061db 100644 --- a/app/src/main/pointer/src/gql/gql.ts +++ b/app/src/main/pointer/src/gql/gql.ts @@ -8,7 +8,9 @@ const documents = { "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n ": types.GoPreviousSlideDocument, "\n query GetPointerType($roomId: ID!) {\n getPointerType(roomId: $roomId)\n }\n ": types.GetPointerTypeDocument, "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n ": types.SubscribeToPointerTypeDocument, - "\n mutation ChangePointerType(\n $roomId: ID!\n $pointerType: String!\n ) {\n changePointerType(\n roomId: $roomId\n pointerType: $pointerType\n )\n }\n ": types.ChangePointerTypeDocument, + "\n query GetCustomPointers($roomId: ID!) {\n getCustomPointers(roomId: $roomId) {\n customPointers {\n id\n label\n url\n }\n }\n }\n ": types.GetCustomPointersDocument, + "\n subscription SubscribeToCustomPointers($roomId: ID!) {\n subscribeToCustomPointers(roomId: $roomId) {\n customPointers {\n id\n label\n url\n }\n }\n }\n ": types.SubscribeToCustomPointersDocument, + "\n mutation ChangePointerType(\n $roomId: ID!\n $pointerType: String!\n ) {\n changePointerType(\n roomId: $roomId\n pointerType: $pointerType\n )\n }\n ": types.ChangePointerTypeDocument, "\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n ": types.StartTimerDocument, "\n mutation ResumeTime($accessToken: String!) {\n resumeTimer(accessToken: $accessToken) {\n status\n }\n }\n ": types.ResumeTimeDocument, "\n mutation PauseTimer($accessToken: String!) {\n pauseTimer(accessToken: $accessToken) {\n status\n }\n }\n ": types.PauseTimerDocument, @@ -24,7 +26,9 @@ export function graphql(source: "\n mutation GoNextSlide($accessToken: export function graphql(source: "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "]; export function graphql(source: "\n query GetPointerType($roomId: ID!) {\n getPointerType(roomId: $roomId)\n }\n "): (typeof documents)["\n query GetPointerType($roomId: ID!) {\n getPointerType(roomId: $roomId)\n }\n "]; export function graphql(source: "\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToPointerType($roomId: ID!) {\n subscribeToPointerType(roomId: $roomId)\n }\n "]; -export function graphql(source: "\n mutation ChangePointerType(\n $roomId: ID!\n $pointerType: String!\n ) {\n changePointerType(\n roomId: $roomId\n pointerType: $pointerType\n )\n }\n "): (typeof documents)["\n mutation ChangePointerType(\n $roomId: ID!\n $pointerType: String!\n ) {\n changePointerType(\n roomId: $roomId\n pointerType: $pointerType\n )\n }\n "]; +export function graphql(source: "\n query GetCustomPointers($roomId: ID!) {\n getCustomPointers(roomId: $roomId) {\n customPointers {\n id\n label\n url\n }\n }\n }\n "): (typeof documents)["\n query GetCustomPointers($roomId: ID!) {\n getCustomPointers(roomId: $roomId) {\n customPointers {\n id\n label\n url\n }\n }\n }\n "]; +export function graphql(source: "\n subscription SubscribeToCustomPointers($roomId: ID!) {\n subscribeToCustomPointers(roomId: $roomId) {\n customPointers {\n id\n label\n url\n }\n }\n }\n "): (typeof documents)["\n subscription SubscribeToCustomPointers($roomId: ID!) {\n subscribeToCustomPointers(roomId: $roomId) {\n customPointers {\n id\n label\n url\n }\n }\n }\n "]; +export function graphql(source: "\n mutation ChangePointerType(\n $roomId: ID!\n $pointerType: String!\n ) {\n changePointerType(\n roomId: $roomId\n pointerType: $pointerType\n )\n }\n "): (typeof documents)["\n mutation ChangePointerType(\n $roomId: ID!\n $pointerType: String!\n ) {\n changePointerType(\n roomId: $roomId\n pointerType: $pointerType\n )\n }\n "]; export function graphql(source: "\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation StartTimer($inputTime: Int!, $accessToken: String!) {\n startTimer(inputTime: $inputTime, accessToken: $accessToken) {\n status\n }\n }\n "]; export function graphql(source: "\n mutation ResumeTime($accessToken: String!) {\n resumeTimer(accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation ResumeTime($accessToken: String!) {\n resumeTimer(accessToken: $accessToken) {\n status\n }\n }\n "]; export function graphql(source: "\n mutation PauseTimer($accessToken: String!) {\n pauseTimer(accessToken: $accessToken) {\n status\n }\n }\n "): (typeof documents)["\n mutation PauseTimer($accessToken: String!) {\n pauseTimer(accessToken: $accessToken) {\n status\n }\n }\n "]; diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index 732ec1c0..6c1e5f00 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -367,6 +367,20 @@ export type SubscribeToPointerTypeSubscriptionVariables = Exact<{ export type SubscribeToPointerTypeSubscription = { __typename?: 'Subscription', subscribeToPointerType: string }; +export type GetCustomPointersQueryVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type GetCustomPointersQuery = { __typename?: 'Query', getCustomPointers: { __typename?: 'CustomPointers', customPointers: Array<{ __typename?: 'CustomPointer', id: string, label: string, url: string }> } }; + +export type SubscribeToCustomPointersSubscriptionVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type SubscribeToCustomPointersSubscription = { __typename?: 'Subscription', subscribeToCustomPointers: { __typename?: 'CustomPointers', customPointers: Array<{ __typename?: 'CustomPointer', id: string, label: string, url: string }> } }; + export type ChangePointerTypeMutationVariables = Exact<{ roomId: Scalars['ID']; pointerType: Scalars['String']; @@ -441,6 +455,8 @@ export const GoNextSlideDocument = {"kind":"Document","definitions":[{"kind":"Op export const GoPreviousSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoPreviousSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goPreviousSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; export const GetPointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetPointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getPointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const SubscribeToPointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToPointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToPointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; +export const GetCustomPointersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetCustomPointers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getCustomPointers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customPointers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}}]}}]}}]} as unknown as DocumentNode; +export const SubscribeToCustomPointersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToCustomPointers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToCustomPointers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customPointers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}}]}}]}}]} as unknown as DocumentNode; export const ChangePointerTypeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ChangePointerType"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"changePointerType"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"pointerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pointerType"}}}]}]}}]} as unknown as DocumentNode; export const StartTimerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"StartTimer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"inputTime"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"startTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"inputTime"},"value":{"kind":"Variable","name":{"kind":"Name","value":"inputTime"}}},{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; export const ResumeTimeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ResumeTime"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"resumeTimer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]} as unknown as DocumentNode; From d5fadd661c2a3ca700d9c5690f185cfda983cc39 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 13 Nov 2022 05:16:20 +0900 Subject: [PATCH 175/189] remove default values of timer input --- app/src/main/pointer/src/components/Timer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/pointer/src/components/Timer.tsx b/app/src/main/pointer/src/components/Timer.tsx index d15235f6..9b493041 100644 --- a/app/src/main/pointer/src/components/Timer.tsx +++ b/app/src/main/pointer/src/components/Timer.tsx @@ -323,7 +323,7 @@ export const Timer: FC = ({ authData }) => { - + = ({ authData }) => { clipRule="evenodd" /> - + Date: Sun, 13 Nov 2022 05:17:33 +0900 Subject: [PATCH 176/189] disable timer input when paused --- app/src/main/pointer/src/components/Timer.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/main/pointer/src/components/Timer.tsx b/app/src/main/pointer/src/components/Timer.tsx index 9b493041..a9dbbec5 100644 --- a/app/src/main/pointer/src/components/Timer.tsx +++ b/app/src/main/pointer/src/components/Timer.tsx @@ -330,8 +330,7 @@ export const Timer: FC = ({ authData }) => { height={24} {...register("minutes", { required: true, - disabled: - timer === null || timer.status === TimerStatus.Running, + disabled: timer === null || timer.status !== TimerStatus.Ready, })} /> @@ -359,8 +358,7 @@ export const Timer: FC = ({ authData }) => { height={24} {...register("seconds", { required: true, - disabled: - timer === null || timer.status === TimerStatus.Running, + disabled: timer === null || timer.status !== TimerStatus.Ready, })} /> From 0a797e6c87c13de6ef9a7e353fbdb72d2bbd0c75 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 13 Nov 2022 05:18:23 +0900 Subject: [PATCH 177/189] notify remaining time --- app/src/main/pointer/src/components/Timer.tsx | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/app/src/main/pointer/src/components/Timer.tsx b/app/src/main/pointer/src/components/Timer.tsx index a9dbbec5..a3393e18 100644 --- a/app/src/main/pointer/src/components/Timer.tsx +++ b/app/src/main/pointer/src/components/Timer.tsx @@ -23,7 +23,7 @@ import { } from "@chakra-ui/react"; import { Cog6ToothIcon } from "@heroicons/react/24/solid"; import { Sink } from "graphql-ws"; -import { FC, useEffect, useMemo, useState } from "react"; +import { FC, useEffect, useMemo, useRef, useState } from "react"; import { useForm } from "react-hook-form"; import { requestWs } from "@/api"; @@ -44,6 +44,7 @@ export const Timer: FC = ({ authData }) => { const { isOpen, onOpen, onClose } = useDisclosure(); const [timer, setTimer] = useState(null); const [noticeTime, setNoticeTime] = useState("1"); + const alreadyNoticedRemainingTime = useRef(false); const toast = useToast(); @@ -233,6 +234,8 @@ export const Timer: FC = ({ authData }) => { case TimerStatus.Running: { let requestId: number | null; + alreadyNoticedRemainingTime.current = false; + const tick = () => { if (timer.status !== TimerStatus.Running) { return; @@ -264,6 +267,20 @@ export const Timer: FC = ({ authData }) => { return; } + if ( + !alreadyNoticedRemainingTime.current && + timeStamp <= Number(noticeTime) * 60 * 1000 + ) { + alreadyNoticedRemainingTime.current = true; + toast({ + title: `${noticeTime}分前になりました`, + description: "残り時間を確認してください", + status: "warning", + duration: 9000, + isClosable: true, + }); + } + const seconds = Math.floor((timeStamp / 1000) % 60); const minutes = Math.floor((timeStamp / 1000 / 60) % 60); setValue("minutes", minutes.toString()); @@ -280,7 +297,7 @@ export const Timer: FC = ({ authData }) => { }; } } - }, [timer, setValue, toast]); + }, [timer, setValue, toast, noticeTime]); useEffect(() => { requestWs( From 9bc190509d986b46cbcdeb2ca2c0760db61ff0ed Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 13 Nov 2022 05:20:58 +0900 Subject: [PATCH 178/189] remove unused import --- app/src/main/pointer/src/App.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/pointer/src/App.tsx b/app/src/main/pointer/src/App.tsx index 771ed791..0a10c4d1 100644 --- a/app/src/main/pointer/src/App.tsx +++ b/app/src/main/pointer/src/App.tsx @@ -1,7 +1,6 @@ import { Container, VStack } from "@chakra-ui/react"; import { useState } from "react"; -import { Header } from "./components/Header"; import { JoinRoomForm } from "./components/JoinRoomForm"; import { Paginator } from "./components/Paginator"; import { Pointer } from "./components/Pointer"; From 46402630cdc9fa9b97c1d364dcee58fafcabc911 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 13 Nov 2022 05:28:06 +0900 Subject: [PATCH 179/189] add closeWsClient to api module --- app/src/main/pointer/src/api.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/pointer/src/api.ts b/app/src/main/pointer/src/api.ts index 044cbd2b..2e962cd2 100644 --- a/app/src/main/pointer/src/api.ts +++ b/app/src/main/pointer/src/api.ts @@ -43,6 +43,11 @@ export const initializeWsClient = (accessToken: string) => { }); }; +export const closeWsClient = () => { + graphqlWsClient?.dispose(); + graphqlWsClient = null; +}; + export const requestWs = < T = unknown, V extends Record = Record From 748bcd042c664b23eb08c16b7db729a67669b09d Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 13 Nov 2022 05:28:35 +0900 Subject: [PATCH 180/189] go to join view when room closed --- app/src/main/pointer/src/App.tsx | 65 ++++++++++++++++++++++++- app/src/main/pointer/src/gql/gql.ts | 2 + app/src/main/pointer/src/gql/graphql.ts | 8 +++ 3 files changed, 73 insertions(+), 2 deletions(-) diff --git a/app/src/main/pointer/src/App.tsx b/app/src/main/pointer/src/App.tsx index 0a10c4d1..a4d76bef 100644 --- a/app/src/main/pointer/src/App.tsx +++ b/app/src/main/pointer/src/App.tsx @@ -1,6 +1,9 @@ -import { Container, VStack } from "@chakra-ui/react"; -import { useState } from "react"; +import { Container, useToast, VStack } from "@chakra-ui/react"; +import { useEffect, useState } from "react"; +import { graphql } from "@/gql"; + +import { closeWsClient, requestWs } from "./api"; import { JoinRoomForm } from "./components/JoinRoomForm"; import { Paginator } from "./components/Paginator"; import { Pointer } from "./components/Pointer"; @@ -8,8 +11,66 @@ import { Timer } from "./components/Timer"; import { AuthData } from "./types/AuthData"; export const App = () => { + const toast = useToast(); const [authData, setAuthData] = useState(null); + useEffect(() => { + if (!authData) { + return; + } + + requestWs( + { + query: graphql(/* GraphQL */ ` + subscription SubscribeToRoomFinishEvent($roomId: ID!) { + subscribeToRoomFinishEvent(roomId: $roomId) + } + `), + variables: { + roomId: authData.roomId, + }, + }, + { + next: ({ data, errors }) => { + if (data?.subscribeToRoomFinishEvent) { + closeWsClient(); + setAuthData(null); + toast({ + title: "ルームが終了しました", + status: "info", + isClosable: true, + }); + } + + if (errors) { + for (const error of errors) { + toast({ + title: "エラーが発生しました", + description: error.message, + status: "error", + duration: 3000, + isClosable: true, + }); + } + } + }, + error: (error) => { + if (error instanceof Error) { + toast({ + title: "エラーが発生しました", + description: error.message, + status: "error", + duration: 3000, + isClosable: true, + }); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + complete: () => {}, + } + ); + }, [authData, toast]); + return ( {authData ? ( diff --git a/app/src/main/pointer/src/gql/gql.ts b/app/src/main/pointer/src/gql/gql.ts index be3061db..3ba225bc 100644 --- a/app/src/main/pointer/src/gql/gql.ts +++ b/app/src/main/pointer/src/gql/gql.ts @@ -3,6 +3,7 @@ import * as types from './graphql'; import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; const documents = { + "\n subscription SubscribeToRoomFinishEvent($roomId: ID!) {\n subscribeToRoomFinishEvent(roomId: $roomId)\n }\n ": types.SubscribeToRoomFinishEventDocument, "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n user {\n id\n }\n }\n }\n ": types.JoinRoomDocument, "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n ": types.GoNextSlideDocument, "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n ": types.GoPreviousSlideDocument, @@ -21,6 +22,7 @@ const documents = { "\n mutation DisconnectPointer($accessToken: String!) {\n disconnectPointer(accessToken: $accessToken) {\n id\n }\n }\n ": types.DisconnectPointerDocument, }; +export function graphql(source: "\n subscription SubscribeToRoomFinishEvent($roomId: ID!) {\n subscribeToRoomFinishEvent(roomId: $roomId)\n }\n "): (typeof documents)["\n subscription SubscribeToRoomFinishEvent($roomId: ID!) {\n subscribeToRoomFinishEvent(roomId: $roomId)\n }\n "]; export function graphql(source: "\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n user {\n id\n }\n }\n }\n "): (typeof documents)["\n mutation JoinRoom(\n $roomId: ID!\n $passcode: String!\n $userName: String!\n ) {\n joinRoom(\n roomId: $roomId\n passcode: $passcode\n userName: $userName\n ) {\n tokenType\n accessToken\n ttl\n user {\n id\n }\n }\n }\n "]; export function graphql(source: "\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoNextSlide($accessToken: String!) {\n goNextSlide(accessToken: $accessToken)\n }\n "]; export function graphql(source: "\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "): (typeof documents)["\n mutation GoPreviousSlide($accessToken: String!) {\n goPreviousSlide(accessToken: $accessToken)\n }\n "]; diff --git a/app/src/main/pointer/src/gql/graphql.ts b/app/src/main/pointer/src/gql/graphql.ts index 6c1e5f00..eb3990d5 100644 --- a/app/src/main/pointer/src/gql/graphql.ts +++ b/app/src/main/pointer/src/gql/graphql.ts @@ -330,6 +330,13 @@ export type Users = { users: Array; }; +export type SubscribeToRoomFinishEventSubscriptionVariables = Exact<{ + roomId: Scalars['ID']; +}>; + + +export type SubscribeToRoomFinishEventSubscription = { __typename?: 'Subscription', subscribeToRoomFinishEvent: string }; + export type JoinRoomMutationVariables = Exact<{ roomId: Scalars['ID']; passcode: Scalars['String']; @@ -450,6 +457,7 @@ export type DisconnectPointerMutationVariables = Exact<{ export type DisconnectPointerMutation = { __typename?: 'Mutation', disconnectPointer: { __typename?: 'User', id: string } }; +export const SubscribeToRoomFinishEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"SubscribeToRoomFinishEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscribeToRoomFinishEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}}]}]}}]} as unknown as DocumentNode; export const JoinRoomDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"JoinRoom"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"joinRoom"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"roomId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roomId"}}},{"kind":"Argument","name":{"kind":"Name","value":"passcode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"passcode"}}},{"kind":"Argument","name":{"kind":"Name","value":"userName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tokenType"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"ttl"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const GoNextSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoNextSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goNextSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; export const GoPreviousSlideDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"GoPreviousSlide"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"goPreviousSlide"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"accessToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"accessToken"}}}]}]}}]} as unknown as DocumentNode; From 4be890b66d83d4a2c70acf1d6dfb546ad5a58f81 Mon Sep 17 00:00:00 2001 From: ygkn <2000ygkn0713@gmail.com> Date: Sun, 13 Nov 2022 08:58:50 +0900 Subject: [PATCH 181/189] make pointer selector scrollable --- app/src/main/pointer/src/components/Pointer.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/pointer/src/components/Pointer.tsx b/app/src/main/pointer/src/components/Pointer.tsx index f14e3efe..01ac0328 100644 --- a/app/src/main/pointer/src/components/Pointer.tsx +++ b/app/src/main/pointer/src/components/Pointer.tsx @@ -393,17 +393,18 @@ export const Pointer: FC = ({ authData }) => { {pointerType && customPointers && ( - + ポインター切り替え - - + + {builtInPointers.concat(customPointers).map((pointer) => (